2011-08-23 69 views
0

关系我在EDMX文件错误在一个一对多的实体框架

User{ 
    properties 
    UserId 
    Name 
} 

Store{ 
    properties 
    StoreId 
    Name 
    Owner 
    navigation proeprties 
    User 
} 

我使用的是POCO方法如下表

Users 
---------- 
UserId (int) 
Name (varchar) 

Stores 
---------- 
StoreId (int) 
Name (varchar) 
Owner (int) (FK to UserId in Users table) 

和下面的实体。将edmx文件映射到我的POCO实体。获取用户工作正常,但是当我尝试创建一个新的用户会保存在成功的数据库,但抛出以下异常

“到数据库的更改被成功提交,但在更新时发生错误 ObjectContext可能是 处于不一致的状态内部异常消息:元数据 关系'FK_Stores_Users_Owner'的信息不能为 检索到,如果使用映射属性,请确保关系的 EdmRelationshipAttribute已定义在 程序集中。使用基于约定的映射时,元数据信息 不能确定分离实体之间的关系。 参数名:relationshipName”

回答

1

我看到你正在使用EF 4.1 EDMX在一起,那么你必须通过自己或者用声明的关键约束属性或流利的API,由于EF 4.1不符合传统的约束兼容。在XML定义的配置。

此外,请确保您使用“ADO.NET的DbContext发生器”,而不是“ADO.NET实体POCO发生器”。

+0

我认为EF有很长的路要走。使用很高兴NHibernate。:( –

+0

我认为只要你知道如何找到EF不能做的选择,EF就会做得更好。 – zsong