我有两个使用 EF4 和最新 CTP 的“纯代码”POCO,针对现有的遗留数据库运行。对 PocoA 运行 LINQ 查询一直有效,直到我将下面的属性添加到该对象,我试图添加一个关系。
public virtual PocoB pocoB { get; set; }
一旦我这样做了,我就开始收到以下错误:
不支持每种类型的多个对象集。对象集“PocoA_DbSet”和“PocoB_DbSet”都可以包含“PocoA”类型的实例。
所以我接下来认为我的问题是因为我没有定义关系,并且这个遗留数据库在主键和外键上使用“fk/pk”前缀而不是“Id”后缀。所以我在上面指定的虚拟方法中添加了以下数据注释,行为没有变化:
[RelatedTo(Property="PocoB", ForeignKey="fkPocoB")]
我真的不知道需要更改什么才能使这项工作成功。
最佳答案
如果您的 DbContext 类公开多个 DbSet
在代码中,错误可能如下所示:
public class MyContex : DbContext {
public DbSet<PocoA> PocoA { get; set; }
public DbSet<PocoA> PocoB { get; set; } ...
最后一行应该是 DbSet
TL;DR - 您复制粘贴了一个属性,但忘记更改 DbSet 中的类型参数。
关于c# - Entity Framework 4 仅代码错误 "Multiple objects sets per type are not supported",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3560091/