Entity Framework 4.1:配置了一对一/零映射的导航属性[重复]

Posted

技术标签:

【中文标题】Entity Framework 4.1:配置了一对一/零映射的导航属性[重复]【英文标题】:Entity Framework 4.1 : The navigation property configured with One-to-One/zero mapping [duplicate] 【发布时间】:2012-01-08 10:51:27 【问题描述】:

可能重复:Entity Framework 4.1 : The navigation property ‘BusinessUser’ declared on type ‘Login’ has been configured with conflicting multiplicities

我有两个实体

BusinessUser  Id(PK), Name,...

Login  BusinessUserID(PK, FK), Email, Password, etc...

BusinessUserLogin 之间的关系是一对零/一

我有以下配置 在 BusinessUser EF 配置类中

this.HasOptional(bu => bu.LoginInfo)
    .WithOptionalPrincipal(l => l.BusinessUser);

在登录EF配置类中

this.HasRequired(l => l.BusinessUser)
    .WithOptional(bu => bu.LoginInfo);

我收到以下异常

已配置在“登录”类型上声明的导航属性“业务用户” 具有相互冲突的多重性。

我首先在 EF 4.1 代码中的一对一/零配置有问题。

public class BusinessUser 
    public virtual int ID  get; set; 

    public virtual int BusinessID  get; set; 

    public virtual Business Business  get; set; 

    public Login LoginInfo  get; set; 
  

 public class Login 
    public virtual int BusinessUserID  get; set; 

    public virtual string Email  get; set; 

    public virtual string Password  get; set; 

    public BUsinessUser BusinessUserInfo  get; set; 
  

我也在寻找双向的。

【问题讨论】:

【参考方案1】:

您需要从BusinessUser 配置中删除以下映射。

this.HasOptional(bu => bu.LoginInfo)
    .WithOptionalPrincipal(l => l.BusinessUser);

在单一配置中配置关系就足够了。如果您需要从BusinessUser 配置映射它,您可以按如下方式进行。

this.HasOptional(bu => bu.LoginInfo)
    .WithRequired(l => l.BusinessUser);

【讨论】:

以上是关于Entity Framework 4.1:配置了一对一/零映射的导航属性[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Entity Framework 4.1 - 动态预加载

Entity Framework 4.1 两个跟踪查询

Entity Framework 4.1 InverseProperty 属性和ForeignKey

卸载 Entity Framework 4.1 六月 CTP

通过 Entity Framework 4.1 中的用户定义函数进行热切加载

Entity Framework 4.1 - 映射错误的模式