1
當涉及基類時,EF CTP5中的多對多關係存在奇怪的問題。我將首先向您展示一個簡單的映射。使用實體基類時的EF CTP5映射問題
我有以下兩個類(實體):
public class Product
{
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<Process> Processes { get; set; }
}
public class Process
{
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
我的映射類:
public class ProductMapping : EntityTypeConfiguration<Product>
{
public ProductMapping()
{
ToTable("Products");
HasKey(t => t.ID);
Property(t => t.ID).HasColumnName("product_id");
Property(t => t.Name).HasColumnName("name");
}
}
public class ProcessMapping : EntityTypeConfiguration<Process>
{
public ProcessMapping()
{
ToTable("Processes");
HasKey(t => t.ID);
Property(t => t.ID).HasColumnName("process_id");
Property(t => t.Name).HasColumnName("name");
HasMany(p => p.Products)
.WithMany(p => p.Processes)
.Map(m =>
{
m.ToTable("Product_processes");
m.MapLeftKey(process => process.ID, "process_id");
m.MapRightKey(product => product.ID, "product_id");
});
}
}
此映射完美的作品。 但是,我想爲我的實體介紹一個基類。因此,作爲一個開始,我創建了以下的基類:
public abstract class Entity
{
public int ID { get; set; }
}
我做我的兩個實體Product
和Process
繼承這個Entity
基類,當然,除了各階級的ID屬性。因此,除了ID屬性現在在基類中實現之外,這兩個實體是相同的。
編譯和運行我的項目後,我得到了下面的「著名的」 EF運行時錯誤:
"Sequence contains more than one matching element"
我知道這個錯誤是關係到許多-to-many關聯,因爲如果我刪除來自Process
類的多對多映射,一切正常運行,但沒有關聯當然。
任何人都可以看到什麼問題在這裏?這是一個CTP5錯誤還是在我的實現中出現了問題?如果事實證明是一個錯誤,您是否有解決方法的建議?
我很害怕這個問題。但謝謝你們確認迭戈。你知道MS是否知道這個錯誤以及它是否會在RTM中修復? – 2011-02-23 13:10:54
@TommyJakobsen:我不知道;我在論壇上問,但沒有得到答案。 – 2011-02-23 14:07:56
似乎現在這個問題已經消失,所以我只會接受這個答案來關閉線程。 – 2011-10-06 08:47:30