Create Foreign Key Relationship in ASP.net MVC Entity Framework Code First

asp.net-mvc c# entity-framework foreign-keys

Question

I am creating an Asp.net MVC application in Which I have Recipe Model and RecipeCategory model. I want Recipe model contain foreign key of RecipeCategory model. I am new to Entity Framework. I am using code first approach of Entity framework. I have recipeCategory model defined as below:

public class RecipeCategory
{
    public int RecipeCategoryID { get; set; }
    public string Name { get; set; }
    public List<Recipe> Recipe { get; set; }
}

and I have recipe model class like below:

public class Recipe
{
    public int ID { get; set; }
    public string Title { get; set; }
    public string  Description { get; set; }

    public int RecipeCategoryID { get; set; }
    public RecipeCategory RecipeCategory { get; set; }
}

What I want:

  1. While creating new Recipe, I want list of Categories in UI to select RecipeCategories but I am unable to get that.

  2. I want properly foreign key established between both tables. please help me solve this

1
1
1/17/2017 7:24:16 AM

Popular Answer

Your relationships are correct. For more improvement i would suggest plural name for your ICollection means Recipes instead of Recipe and replace List with ICollection.

public class RecipeCategory
{
    public int RecipeCategoryID { get; set; }
    public string Name { get; set; }
    public ICollection<Recipe> Recipes { get; set; }
}

public class Recipe
{
    public int ID { get; set; }
    public string Title { get; set; }
    public string  Description { get; set; }

    public int RecipeCategoryID { get; set; }
    public RecipeCategory RecipeCategory { get; set; }
}

Now come to main point as you have said you are unable to get RecipeCategories so can you please post your code for this which you are using?

It should be like this: 1. You must have created a context class inherited from DbContext and in that you must have defined your both entities in DbSets.

public class YourContext: DbContext
{
    public YourContext():
        base("yourConnectionString")
    {
    }

    public DbSet<Recipe> Recipes { get; set; }
    public DbSet<RecipeCategory> RecipeCategories { get; set; }
}

after that you can return your categories like this:

public IEnumerable<RecipeCategory> Get()
{
    YourContext context = new YourContext();
    return context.RecipeCategories;
}
3
1/17/2017 5:20:19 AM


Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow