2017-08-31 3 views
2

Ich habe zwei Klassen in meinem PocosEntityFramework-Code Erster unnötige Fremdschlüssel

public class Listing 
{ 
    public int ListingId { get; set; } 

    [ForeignKey("Seller")] 
    public int SellerId { get; set; } 
    public virtual User Seller { get; set; } 

    [Required] 
    public string ItemCategory { get; set; } 

    [Required] 
    public string ItemName { get; set; } 

    [Required] 
    public decimal Cost { get; set; } 

    public DateTime DateOfPublish { get; set; } 

    [Required] 
    public bool SaleStatus { get; set; } 

    [ForeignKey("Buyer")] 
    public Nullable<int> BuyerId { get; set; } 
    public virtual User Buyer { get; set; } 
} 

Und

public class User 
{ 
    public int UserId { get; set; } 

    [Required] 
    public string FirstName { get; set; } 

    [Required] 
    public string SecondName { get; set; } 

    [Required] 
    public string Email { get; set; } 

    [Required] 
    public string Password { get; set; } 

    public string PhoneNumber { get; set; } 

    public string Address { get; set; } 

    public virtual ICollection<Listing> Listings { get; set; } 

Wenn ich wandern diese in die Datenbank I BuyerId, sellerID und User_UserId

erhalten Die Spalte User_UserId ist völlig unnötig, aber ich bin nicht sicher, was ich mit meinem Code tun soll, um ihn zu entfernen.

+0

Scheint wie ein Duplikat von [dieser Frage] (https://stackoverflow.com/questions/21766591/ef-code-first-duplicate -foreign-keys-one-from-name-convention-one-from-naviga) –

+0

Ich habe bereits Data Annotation auf meinen Eigenschaften –

Antwort

1

Seller und Buyer Navigationseigenschaften in Listing Klasse zwei viele zu eins-Beziehungen definieren. Aber es gibt einzelne Sammlung Navigationseigenschaft Listings in User Klasse. Da EF nicht weiß, zu welcher der beiden Beziehungen es zugeordnet werden sollte, wird es einfach als eine dritte-Beziehung ohne entsprechende Referenznavigationseigenschaft und Standardkonvention FK-Name User_UserId betrachtet.

Sie müssen die Listings-Eigenschaft einer der Referenznavigationseigenschaften zuordnen. Eine Möglichkeit dazu besteht darin, das Attribut InverseProperty zu verwenden. Oder ersetzen Sie sie durch zwei Auflistungsnavigationseigenschaften und ordnen Sie sie den entsprechenden Referenznavigationseigenschaften zu.

Kurz, ersetzen

public virtual ICollection<Listing> Listings { get; set; } 

mit

[InverseProperty("Seller")] 
public virtual ICollection<Listing> SellerListings { get; set; } 
[InverseProperty("Buyer")] 
public virtual ICollection<Listing> BuyerListings { get; set; } 
+0

Gelöst !!! Vielen Dank!!! –

Verwandte Themen