我有两个使用 EF4 和最新 CTP 的“仅代码”POCO,针对现有的遗留数据库运行。对 PocoA 运行 LINQ 查询一直有效,直到我将下面的属性添加到该对象,我试图添加关系。
public virtual PocoB pocoB { get; set; }
一旦我这样做了,我开始收到以下错误:
Multiple object sets per type are not supported. The object sets 'PocoA_DbSet' and 'PocoB_DbSet' can both contain instances of type 'PocoA'.
所以我接下来认为我的问题是因为我没有定义关系,并且这个旧数据库在主键和外键上使用“fk/pk”前缀而不是“Id”后缀。因此,我将以下数据注释添加到上面指定的虚拟方法中,行为没有改变:
[RelatedTo(Property="PocoB", ForeignKey="fkPocoB")]
我真的不知道需要改变什么才能使这项工作发挥作用。
如果您的 DbContext 类公开多个 DbSet 属性,其中 T 出现多次,则会出现此错误。基本上它无法弄清楚类型 T 的实例属于哪个 DbSet。
在代码中,错误可能如下所示:
public class MyContex : DbContext {
public DbSet<PocoA> PocoA { get; set; }
public DbSet<PocoA> PocoB { get; set; } ...
最后一行应该是 DbSet 而不是 DbSet
TL;DR- 您复制粘贴了一个属性并忘记更改类型参数在数据库集中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)