Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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# 实体框架HasForeignKey不工作_C#_Entity Framework_Ef Fluent Api - Fatal编程技术网

C# 实体框架HasForeignKey不工作

C# 实体框架HasForeignKey不工作,c#,entity-framework,ef-fluent-api,C#,Entity Framework,Ef Fluent Api,我在EF 6.2中遇到了HasForeignKey的一个奇怪行为 类别寄售有两个属性客户和发件人: public class Consignment { public Consignment() { Sender = new Sender(); Customer = new Customer(); } public string OrderNo { get; set; } public Customer Customer

我在EF 6.2中遇到了HasForeignKey的一个奇怪行为

类别寄售有两个属性客户和发件人:

public class Consignment
{
    public Consignment()
    {
        Sender = new Sender();
        Customer = new Customer();
    }

    public string OrderNo { get; set; }

    public Customer Customer { get; set; }
    public Sender Sender { get; set; }

    public int CustomerId { get; set; }
}
CustomerId是客户的外键。实体配置如下:

    public class ConsignmentEntityConfiguration : EntityTypeConfiguration<Consignment>
{
    public ConsignmentEntityConfiguration()
    {
        HasKey(s => s.OrderNo);

        HasRequired(x => x.Customer)
            .WithMany()
            .HasForeignKey(x => x.CustomerId);

        HasRequired(x => x.Sender)
            .WithMany()
            .Map(x => x.MapKey("SenderId"));
    }
}

public class SenderEntityConfiguration : EntityTypeConfiguration<Sender>
{
    public SenderEntityConfiguration()
    {
        HasKey(x => x.Number);
    }
}

public class CustomerEntityConfiguration : EntityTypeConfiguration<Customer>
{
    public CustomerEntityConfiguration()
    {
        HasKey(x => x.Id);
    }
}
当我在新的测试项目(使用简单的类)中重新创建相同的模型时,HasForeignKey按预期工作

我在最初的项目中遗漏了什么?类非常简单,我检查了所有配置,原始项目和测试项目看起来一样,但工作方式不同

稍微简化的课程:

public class Sender
{
    public string Number { get; set; }
    public string Code { get; set; }
    public string Name { get; set; }
}
public class Customer
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public string Phone { get; set; }
    public string MobilePhone { get; set; }
}

您可以尝试添加客户

public virtual ICollection<Consignment> Consignments { get; set; }

试过了,没用。还有一个问题更多的是关于“什么会以这种方式影响外键的简单行为”,而不是如何修复它。它在具有类似上下文的其他项目中工作得非常好。
public class Sender
{
    public string Number { get; set; }
    public string Code { get; set; }
    public string Name { get; set; }
}
public class Customer
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public string Phone { get; set; }
    public string MobilePhone { get; set; }
}
public virtual ICollection<Consignment> Consignments { get; set; }
HasRequired(x => x.Customer)
            .WithMany(x=>x.Consignments)
            .HasForeignKey(x => x.CustomerId);