【发布时间】:2011-02-23 11:52:04
【问题描述】:
当涉及到基类时,我在 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 运行时错误:
“序列包含多个匹配元素”
我知道这个错误与多对多关联有关,因为如果我从Process 类中删除多对多映射,一切都会正常运行,但当然没有关联。
谁能看出这里有什么问题?这是 CTP5 错误还是我的实现有问题?如果结果是错误,您有解决方法的建议吗?
【问题讨论】:
标签: entity-framework-4 mapping code-first ef-code-first