2017-01-17 2 views
0

Ich erstelle eine Asp.net MVC-Anwendung, in der ich Recipe Model und RecipeCategory Modell habe. Ich möchte Rezept-Modell foreign key von RecipeCategory Modell enthalten. Ich bin neu im Entity Framework. Ich verwende code first Ansatz von Entity-Framework. Ich habe recipeCategory Modell wie unten definiert:Erstellen von Fremdschlüssel Beziehung in ASP.net MVC Entity Framework Code Zuerst

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

und ich habe Klasse Rezept Modell wie unten:

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

Was ich will:

  1. Während neues Rezept zu schaffen, ich will Liste von Kategorien in UI, um RezeptKategorien auszuwählen, aber ich kann das nicht bekommen.

  2. Ich möchte ordnungsgemäß Fremdschlüssel zwischen beiden Tabellen eingerichtet. Bitte helfen Sie mir, das zu lösen

Antwort

1

Ihre Beziehungen sind korrekt. Für mehr Verbesserung würde ich Pluralname für Ihre ICollection vorschlagen Rezepte anstelle von Rezept vorschlagen und Liste mit ICollection ersetzen.

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

Nun zum Hauptpunkt kommen, wie Sie gesagt haben, Sie nicht in der Lage sind RecipeCategories zu bekommen, so können Sie bitte Ihren Code für diese Stelle, die Sie verwenden?

Es sollte so sein: 1. Sie müssen eine Kontextklasse erstellt haben, die von DbContext übernommen wurde und in der Sie beide Entitäten in DbSets definiert haben müssen.

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

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

danach können Sie Ihre Kategorien wie folgt zurück:

public IEnumerable<RecipeCategory> Get() 
{ 
    YourContext context = new YourContext(); 
    return context.RecipeCategories; 
} 
+0

i Ansicht für Rezept-Modell und in der Ansicht erstellen erstellt haben, ich habe Option nicht Kategorie aus der Liste für die Auswahl? Wie kann ich das tun, wenn meine Beziehungen korrekt sind? –

+0

Ich muss separate Rezeptkategorien bekommen? Ich erstelle Ansicht von stark typisiertem Modell Rezept? sollte es nicht in der create view sein? –

+0

Okay. Also müssen Sie bei der Methode create action die Liste der RecipeCategories aus der Datenbank holen und sie dann in einem ViewBag speichern. Dann können Sie das Drop-Down aus der Viewbag rendern. Bitte nehmen Sie Bezug auf http://stackoverflow.com/questions/16594958/how-to-use-a-viewbag-to-create-a-dropdownlist und http://www.compilemode.com/2016/01/bind- Dropdownliste-using-viewbag-in-asp-net-mvc.html @DelicateHiba –

0
public class RecipeCategory 
{ 
[Key][DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity)] 
    public int RecipeCategoryID { get; set; } 
    public string Name { get; set; } 
    public List<Recipe> Recipe { get; set; } 
} 


public class Recipe 
{ 

    public int ID { get; set; } 

    public virtual int RecipeCategoryID { get; set; } 

    [ForeignKey("RecipeCategoryID ")] 
    public virtual ApplicationUser ApplicationUser { get; set; } 

    public string Title { get; set; } 
    public string Description { get; set; } 

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

Sie müssen in der Tabelle für Fremdschlüssel setzen.

[ForeignKey("ObjName")] 

In Ihrem Fall

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