gpt4 book ai didi

entity-framework-4.1 - 多个外键指向Entity Framework 4.1代码中的同一张表

转载 作者:行者123 更新时间:2023-12-03 14:03:32 25 4
gpt4 key购买 nike

我坚持尝试为以下数据库关系编写Entity Framework 4.1代码优先模型。

这是关系的视觉。

dbo。[公司]可以将卖方或债务人作为公司类型。

dbo。[SellerDebtors]定义卖方公司与债务人公司的连接。

我编写的代码基于我的原始EF 4.0 POCO模型代码。这就是我想出的-此代码不起作用。

public class SellerDebtor
{
public int SellerDebtorId { get; set; }
public int DebtorCompanyId { get; set; }
public int SellerCompanyId { get; set; }

public Company DebtorCompany { get; set; }
public Company SellerCompany { get; set; }

public ICollection<SellerDebtorInfo> SellerDebtorInfos { get; set; }
public ICollection<SellerDebtorFile> SellerDebtorFiles { get; set; }
}


public class Company
{
public int CompanyId { get; set; }
public string CompanyType { get; set; }
public string Name { get; set; }

public virtual ICollection<User> Users { get; set; }
public virtual ICollection<CompanyInfo> CompanyInfos { get; set; }
public virtual ICollection<CompanyFile> CompanyFiles { get; set; }

public virtual ICollection<SellerDebtor> SellerDebtorDebtorCompanies { get; set; }
public virtual ICollection<SellerDebtor> SellerDebtorSellerCompanies { get; set; }

}


目前,我将其视为错误:

System.Data.SqlClient.SqlException: Invalid column name 'DebtorCompany_CompanyId'.
Invalid column name 'SellerCompany_CompanyId'.
Invalid column name 'Company_CompanyId'.
Invalid column name 'Company_CompanyId1'.


理想情况下,我希望能够保持关系的命名。

我猜我需要设置一些属性,但是我不确定该设置什么。

最佳答案

EF无法按照约定确定2个类中的哪些导航属性属于同一类,并创建4个关系(在另一端没有结束)而不是2个关系(在两端都有结束)。当您在同一类中具有多个相同类型(在您的情况下为Company)的导航属性时,总是会发生此问题。您可以尝试通过以下方式解决此问题:

public class SellerDebtor
{
public int SellerDebtorId { get; set; }
[ForeignKey("DebtorCompany")]
public int DebtorCompanyId { get; set; }
[ForeignKey("SellerCompany")]
public int SellerCompanyId { get; set; }

[InverseProperty("SellerDebtorDebtorCompanies")]
public Company DebtorCompany { get; set; }
[InverseProperty("SellerDebtorSellerCompanies")]
public Company SellerCompany { get; set; }

public ICollection<SellerDebtorInfo> SellerDebtorInfos { get; set; }
public ICollection<SellerDebtorFile> SellerDebtorFiles { get; set; }
}


[InverseProperty(...)]在关系的另一端定义导航属性,并明确告诉EF关系中哪些导航属性对一起属于。

关于entity-framework-4.1 - 多个外键指向Entity Framework 4.1代码中的同一张表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6015964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com