实体框架6关系和包含问题

问题描述 投票:0回答:1

我有以下POCO在旧版EF6 API上运行(为简洁起见,已简化)。

public class Customer 
{

    [ForeignKey("Parent")]
    public int? ParentId { get; set; }
    public Customer Parent { get; set; }

    public virtual List<Site> Sites { get; set; }
}

public class Site 
{
    public List<Department> Departments { get; set; }

    [ForeignKey("Customer")]
    public int? CustomerId { get; set; }
    public Customer Customer { get; set; }
}

我在客户实体上具有以下流利的api配置;

HasOptional(x => x.Sites).WithOptionalDependent().WillCascadeOnDelete(true);

并且在站点实体上;

HasOptional(r => r.Customer).WithMany().HasForeignKey(r => r.CustomerId);

但是,当我从客户角度运行以下查询时(并希望包括网站)

context.Where<Customer>(x => x.ParentId == null,
                    x => x.Sites).ToList();

方法在哪里;

    public List<T> Where<T>(Expression<Func<T, bool>> predicate, params Expression<Func<T, object>>[] includes) where T : class, IEntity
    {
        return this.AsQueryable(includes).Where(predicate).ToList();
    }

我收到错误消息;

System.Data.Entity.Core.EntityCommandCompilationException:准备命令定义时发生错误。有关详细信息,请参见内部异常。 ---> System.Data.Entity.Core.MetadataException:导航属性CCS.Data.UCare.Customer.Sites的声明类型与指定导航的结果不兼容。

EF在数据库中生成的表如下;

Customers Table MSSQL

Sites Table MSSQL

任何人都可以建议我在这里出什么问题吗?

UPDATE

我还尝试了数据库的全新重建(删除了所有迁移,并以新的add-migrationupdate-database的形式运行到新的测试数据库)。但是问题仍然存在。

entity-framework entity-framework-6
1个回答
0
投票

您尝试过:

HasOptional(r => r.Customer).WithMany(c => c.Sites).HasForeignKey(r => r.CustomerId);

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.