Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用实体框架6和fluent api时复制导航属性_C#_Entity Framework_Foreign Keys_Fluent_Entity Framework 6 - Fatal编程技术网

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还是一个特性?