实体框架和继承:NotSupportedException

Mar*_*tin 10 entity-framework entity-framework-4

我越来越

System.NotSupportedException:EntitySet"Entities.Message"中的所有对象必须具有唯一的主键.但是,类型为"Model.Message"的实例和类型为"Model.Comment"的实例都具有相同的主键值

但我不知道这意味着什么.

使用EF4,我有一堆Message类型的实体.其中一些消息实际上是一个子类型,注释,按类型继承.只是

 DB.Message.First();
Run Code Online (Sandbox Code Playgroud)

会产生例外.我有其他的子类型实例,我没有遇到问题,但我看不出任何差异.但是,有时候,如果我重新启动开发服务器,问题就会消失,但并非总是如此.

编辑:我已经解决了(之前应该有)问题是存储过程获取我的消息的错误.当前设置的方式是获取与Message相关的所有字段,sproc会忽略Comment表.然后上下文继续进行捣乱,可能是通过再次提取那些也是评论的消息,如您所建议的那样.如何正确地做到这一点是当前的核心问题.我在http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/bb0bb421-ba8e-4b35-b7a7-950901adb602找到了解决方案的一些迹象.

And*_*son 0

我不是 EF 类型的人(忙于使用 NHibernate,还没有时间了解 EF 的最新情况),所以我在这里可能完全错误,但问题可能是这两个表(因为您正在使用按每个类型的表继承)是否有冲突的主键?

如果检查两个表中的数据,主键值是否冲突?