c# - Entity Framework 4 仅代码错误 "Multiple objects sets per type are not supported"

标签 c# .net asp.net-mvc entity-framework entity-framework-4

我有两个使用 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 属性,其中 T 出现不止一次,则会发生此错误。基本上它无法弄清楚类型 T 的实例属于哪个 DbSet。

在代码中,错误可能如下所示:

public class MyContex : DbContext {
    public DbSet<PocoA> PocoA { get; set; }
    public DbSet<PocoA> PocoB { get; set; } ...

最后一行应该是 DbSet 而不是 DbSet

TL;DR - 您复制粘贴了一个属性,但忘记更改 DbSet 中的类型参数

关于c# - Entity Framework 4 仅代码错误 "Multiple objects sets per type are not supported",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3560091/

相关文章:

asp.net-mvc - 重定向是否比返回其他类型的结果效率低?

c# - 以编程方式获取 TFS 中文件的两个版本之间的差异

C# 可执行属性

c# - 内部异常不在我的代码中抛出

c# - 如何使用 gzip 压缩 .net 对象实例

c# - 如何处理 Windows 窗体中文本框的完全更改?

c# - 为什么不能将 Type 用作常量值?

asp.net-mvc - 如何在单个页面中使用两个 AntiForgeryToken 而不使用已弃用的 'Salt' 属性

c# - 圆角网格角匹配窗口圆角

使用存储库模式的 ASP.NET MVC