C# Entity.HasRequired返回具有NULL属性的项

C# Entity.HasRequired返回具有NULL属性的项,c#,entity-framework,C#,Entity Framework,我有两个与Fluent-API相关的实体 public class EDeal : IEntityBase { public int ID { get; set; } public string Customer_id { get; set; } public virtual ECustomer Customer { get; set; } ...etc } public class ECustomer : IEntityBase { public in

我有两个与Fluent-API相关的实体

public class EDeal : IEntityBase
{
    public int ID { get; set; }
    public string Customer_id { get; set; }
    public virtual ECustomer Customer { get; set; }
    ...etc
}

public class ECustomer : IEntityBase
{
    public int ID { get; set; }
    public string Customer_id { get; set; }
    public string Customer_name { get; set; }
    public virtual ICollection<EDeal> Deals { get; set; }
    ...etc
}
公共类EDeal:IEntityBase
{
公共int ID{get;set;}
公共字符串Customer_id{get;set;}
公共虚拟ECustomer客户{get;set;}
等
}
公共类ECustomer:IEntityBase
{
公共int ID{get;set;}
公共字符串Customer_id{get;set;}
公共字符串Customer_name{get;set;}
公共虚拟ICollection交易{get;set;}
等
}
联系

modelBuilder.Entity<ECustomer>().HasKey(c => c.Customer_id);
modelBuilder.Entity<EDeal>().HasRequired<ECustomer>(s => s.Customer)
    .WithMany(r => r.Deals)
    .HasForeignKey(s => s.Customer_id);
modelBuilder.Entity().HasKey(c=>c.Customer\u id);
modelBuilder.Entity().HasRequired(s=>s.Customer)
.WithMany(r=>r.Deals)
.HasForeignKey(s=>s.Customer_id);
我承认这是低效的链接,但我不得不以这种方式链接它,因为我无法控制db结构

需要注意的重要一点是,EDeal需要一个ECustomer(.HasRequired)。该数据库在EDeal中包含许多行,这些行的Customer_id字段为空,我不想在查询实体时提取这些行

我以为.HasRequired会确保我永远不会得到任何没有与他们相关联的Eduals,但事实似乎并非如此。相反,当我试图按Customer中的某个属性进行订购时,它似乎只会忽略那些具有NULL Customer_id值的行。即使这样,返回查询的.Count()的行为也很奇怪

var count1 = db.Set<EDeal>().Count(); //returns 1112
var count2 = db.Set<EDeal>().ToList().Count(); //returns 1112
var count3 = db.Set<EDeal>().OrderBy(c => c.Customer.Customer_name).Count(); //returns 1112
var count4 = db.Set<EDeal>().OrderBy(c => c.Customer.Customer_name).ToList().Count(); //returns 967
var count1=db.Set().Count()//返回1112
var count2=db.Set().ToList().Count()//返回1112
var count3=db.Set().OrderBy(c=>c.Customer.Customer_name).Count()//返回1112
var count4=db.Set().OrderBy(c=>c.Customer.Customer_name).ToList().Count()//返回967
我知道我可以添加一个.Where(c=>c.Customer.Customer_id!=Null)来确保我只得到我想要的东西,但我希望在实体的配置中有一个解决方案,因为我有许多通用函数作用于我的IEntityBase类,它们在通用实体上构建动态查询,我不想在这种情况下使用变通方法

问题:

1) 有没有办法限制实体只返回那些具有相应ECustomer的edeal

2) 在我上面的例子中,为什么count3和count4不同

提前谢谢