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

13,179

Solution 1

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;
}

Solution 2

You need to put foreign key constraints in table.

[ForeignKey("ObjName")]

In your case,

public class Recipe
{
    public int ID { get; set; }
    public string Title { get; set; }
    public string  Description { get; set; }
    [ForeignKey("RecipeCategory")]
    public int RecipeCategoryID { get; set; }
    public RecipeCategory RecipeCategory { get; set; }
}
Share:
13,179
Delicate Hiba
Author by

Delicate Hiba

Updated on June 05, 2022

Comments

  • Delicate Hiba
    Delicate Hiba almost 2 years

    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

  • Delicate Hiba
    Delicate Hiba over 7 years
    i have created view for Recipe Model and in the Create view, i do not have option for selecting category from the list? how can i do that if my relations are correct?
  • Delicate Hiba
    Delicate Hiba over 7 years
    i have to get separate RecipeCategories? i am creating view from strongly typed model Recipe? it should not be there in the create view?
  • Ankit Sahrawat
    Ankit Sahrawat over 7 years
    Okay.. So on your create action method you need to get the list of RecipeCategories from database and then store it in a ViewBag. Then on your view you can render the dropdown from the viewbag. Please take reference from stackoverflow.com/questions/16594958/… and compilemode.com/2016/01/… @DelicateHiba