C# 使用实体框架6和fluent api时复制导航属性
我有两个有关系的模型C# 使用实体框架6和fluent api时复制导航属性,c#,entity-framework,foreign-keys,fluent,entity-framework-6,C#,Entity Framework,Foreign Keys,Fluent,Entity Framework 6,我有两个有关系的模型 public class Customer { public Customer() { CustomerSites = new List<CustomerSite>(); } public IList<CustomerSite> CustomerSites { get; set; } } public class CustomerSite { public Guid Custome
public class Customer
{
public Customer()
{
CustomerSites = new List<CustomerSite>();
}
public IList<CustomerSite> CustomerSites { get; set; }
}
public class CustomerSite
{
public Guid CustomerId { get; set; }
public Customer Customer { get; set; }
}
它应该只有一个CustomerId,而不是CustomerId。正如您所看到的,这也是可以为空的。如果在db上下文中删除此列,则会在更新时引发异常。我认为这很奇怪……原因是在重新分解过程中,实体中保留了一些旧属性,这些属性在自动映射数据库中的其他FK时会产生影响 示例:如果我们有
public class CustomerSite
{
public Guid CustomerId { get; set; }
public Customer Customer { get; set; }
............
public Customer Customer1 { get; set; }
}
并且只有一个fluent映射语句,如
modelBuilder.Entity<CustomerSite>().HasRequired(x => x.Customer)
.WithMany(x => x.CustomerSites).HasForeignKey(x => x.CustomerId);
modelBuilder.Entity().HasRequired(x=>x.Customer)
.WithMany(x=>x.CustomerSites)。HasForeignKey(x=>x.CustomerId);
在数据库中,我们将有类似additionak FK的Customer1_Id,该Id可为空
注意。也许它能帮助别人 原因是在重新分解过程中,实体中保留了一些旧属性,这些属性在自动映射数据库中的其他FK时会产生影响 示例:如果我们有
public class CustomerSite
{
public Guid CustomerId { get; set; }
public Customer Customer { get; set; }
............
public Customer Customer1 { get; set; }
}
并且只有一个fluent映射语句,如
modelBuilder.Entity<CustomerSite>().HasRequired(x => x.Customer)
.WithMany(x => x.CustomerSites).HasForeignKey(x => x.CustomerId);
modelBuilder.Entity().HasRequired(x=>x.Customer)
.WithMany(x=>x.CustomerSites)。HasForeignKey(x=>x.CustomerId);
在数据库中,我们将有类似additionak FK的Customer1_Id,该Id可为空
注意。也许它能帮助别人 这是一个bug还是一个特性?这是一个bug还是一个特性?