C# 多重性与引用约束冲突
我收到以下EF错误: 代理_MailingAddress::多重性与引用冲突 关系中角色“代理\邮件地址\目标”中的约束 “代理地址”。因为依赖关系中的所有属性 角色不可为Null,则主体角色的多重性必须为空 一, 当它执行时,它似乎会抛出这个C# 多重性与引用约束冲突,c#,entity-framework,C#,Entity Framework,我收到以下EF错误: 代理_MailingAddress::多重性与引用冲突 关系中角色“代理\邮件地址\目标”中的约束 “代理地址”。因为依赖关系中的所有属性 角色不可为Null,则主体角色的多重性必须为空 一, 当它执行时,它似乎会抛出这个 base.OnModelCreating(modelBuilder)。 这是我的模型。FWIW,代理继承自用户类 public class Agent { public int AgentId { get; set; } public i
base.OnModelCreating(modelBuilder)。
这是我的模型。FWIW,代理
继承自用户
类
public class Agent
{
public int AgentId { get; set; }
public int PrimaryAddressId { get; set; }
public Address PrimaryAddress { get; set; }
public int? MailingAddressId { get; set; }
public Address MailingAddress { get; set; }
}
public class Address
{
public int AddressId { get; set; }
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
}
我相信这个问题与Agent
有多个Address
类型的属性有关,可能还因为其中一个属性可以为null。我做了一些搜索,但似乎找不到答案
我假设更改我的代理
模型,使其具有一个类型为列表
的属性,该属性将使用用户地址
查找表来解决错误,但我更希望保留当前模型,而不是
如何解决此错误?提前感谢。如果您的配置和型号不匹配,可能会发生这种情况 假设在db配置中,您有如下规则:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Agent>().HasRequired(x=>x.MailingAddress);
//..
我相信这个问题与代理已经
Address类型的多个属性,可能也是因为一个
它们中的任何一个都可以为空
事实并非如此。确定问题根源的另一种方法是:
对于database first:如果您更改了已添加到实体框架中的现有表,例如在事实发生后添加了外键约束,请在EDMX设计器中删除该表,然后再次添加,这将解决错误。您发布的代码看起来正常。问题一定是你如何使用它。显示发生错误的代码,并发布完整的异常消息。对不起,伙计们。更新了。可能重复您在建模创建中有任何配置吗?我觉得自己像个白痴。AgentConfiguration具有
属性(p=>p.MailingAddressId).IsRequired()代码>用于映射this.HasRequired(o=>o.Address).WithMany().HasForeignKey(o=>o.AddressId).WillCascadeOnDelete(false);
public int? MailingAddressId { get; set; }