我们最近推出了一个表(Organization_XREF),它包含两个外键列(Parent_ID
和Child_ID
),它们都引用组织中的同一主键列(OrganizationID
)表:
当我们通过此关系运行EF Reverse POCO Code First Generator时,它会在Organization_Organization
Configuration类中生成HasMany关系,如下所示:
HasMany(t => t.Organization_Organization).WithMany(t => t.Organization_Organization).Map(m =>
{
m.ToTable("Organization_XREF", schema);
m.MapLeftKey("ChildId");
m.MapRightKey("ParentId");
});
此代码无法编译。编译器无法推断HasMany的参数类型,可能是因为没有为Organization_Organization
模型生成Organization_Organization属性。
有没有其他人遇到过类似的问题?你是怎么解决这个问题的?这对我们来说是一个关键问题,因为它破坏了我们的API。
答案 0 :(得分:2)
事实证明,这是产品的缺陷。该工具的作者(Simon Hughes)亲切地与我联系,让我知道问题已在v2.10.0中得到解决。
答案 1 :(得分:0)
不知道这是否有帮助,但看起来它将表识别为组织与其自身之间的链接表/关联表。
所以Organization_XREF
不是'适当的'实体;它是许多导航属性的模型。
我希望将导航属性设置为像;
ICollection<Organization> Parents;
ICollection<Organization> Children;
还有一些关于Organization_XREF
Organization Parent;
Organization Child;
然后在模型构建过程中建立关系;
public class OrganizationXREFConfiguration : EntityTypeConfiguration<OrganizationXREF>
{
public OrganizationXREFConfiguration()
{
ToTable("OrganizationXREF");
HasRequired(ar => ar.Parent).WithMany(a => a.Parents);
HasRequired(ar => ar.Child).WithMany(a => a.Children);
}
}