EF Code First mit viele, zu viele sich selbst verweisenden Beziehung
Bin ich angefangen mit mit dem EF Code First mit MVC und bin ein bisschen ratlos mit etwas. Ich habe folgende db-Struktur (Sorry, aber ich war nicht erlaubt, nach einem Bild, leider):
Tabelle - Produkte
Tisch - RelatedProducts
1-auf Viele Produkte.ProductID -> RelatedProducts.ProductID
1-auf Viele Produkte.ProductID -> RelatedProducts.RelatedProductID
Grundsätzlich habe ich ein Produkt, das kann eine Reihe von Produkten, die damit zusammenhängen. Diese sind gehalten, die in den RelatedProducts Tabelle mit der Beziehung, definiert durch die ProductID und die ProductID des zugehörigen Produktes, die ich genannt habe RelatedProductID. In meinem code, den ich produziert hat den folgenden Klassen:
public class MyDBEntities : DbContext
{
public DbSet<Product> Products { get; set; }
public DbSet<RelatedProduct> RelatedProducts { get; set; }
}
public class Product
{
public Guid ProductID { get; set; }
public string Name { get; set; }
public string Heading { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
public Guid CategoryID { get; set; }
public string ImageURL { get; set; }
public string LargeImageURL { get; set; }
public string Serves { get; set; }
public virtual List<RelatedProduct> RelatedProducts { get; set; }
}
public class RelatedProduct
{
public Guid ProductID { get; set; }
public Guid RelatedProductID { get; set; }
public virtual Product Product { get; set; }
public virtual Product SimilarProduct { get; set; }
}
Ich versuche dann den Zugriff auf diese im code über:
myDB.Products.Include("RelatedProducts").Where(x => x.ProductID == productID).FirstOrDefault();
Aber ich bekomme immer folgenden Fehler:
{"Invalid column name 'ProductProductID2'.\r\nInvalid column name 'ProductProductID2'.\r\nInvalid column name 'ProductProductID'.\r\nInvalid column name 'ProductProductID1'.\r\nInvalid column name 'ProductProductID2'."}
Was mache ich falsch? Ich wollen im Grunde, um ein Produkt dann Durchlaufen Sie die RelatedProducts und-Anzeige, Produkt-info.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der erste Teil der Antwort ist, dass EF4 CTP5 ist nicht korrekt-mapping-POCOs zu der Datenbank, weil es nicht intelligent genug. Wenn Sie Auschecken der Datenbank aus, erhalten Sie:
Igitt! Das muss behoben werden mit etwas Handarbeit. In Ihrem DbContext, ergänzen Sie die Regeln in etwa so: