Vb.net 如何在EF中建模1:M关系而不使用依赖关系';s主键作为外键?

Vb.net 如何在EF中建模1:M关系而不使用依赖关系';s主键作为外键?,vb.net,entity-framework-6,Vb.net,Entity Framework 6,我有三个实体A、B和C。需要通过实体A访问实体C上的property MarketAccountNumber。 实体如下: Partial Public Class A <Key> <Column("CoID", Order:=0)> Public Property CompanyId As Byte <Key> <Column("BNum", Order:=1)&

我有三个实体A、B和C。需要通过实体A访问实体C上的property MarketAccountNumber。 实体如下:

Partial Public Class A
    <Key>
    <Column("CoID", Order:=0)>
    Public Property CompanyId As Byte
    
    <Key>
    <Column("BNum", Order:=1)>
    Public Property B_Number as Integer
    
    Public Property ID as String
    
    <ForeignKey("CompanyID, ID")>
    Public Overridable Property B As B  

End Class
Partial Public Class B
    <Key>
    <Column("CoID", Order:=0)>
    Public Property CompanyId As Byte
    
    <Key>
    <Column("BNum", Order:=1)>
    <StringLength(15)>
    Public Property Code As String

    <ForeignKey(?????)>
    Public Overridable Property C as ICollection(Of C)

End Class
部分公共A类
公共财产公司ID为字节
公共属性B_数为整数
作为字符串的公共属性ID
公共可重写属性B作为B
末级
部分公共B类
公共财产公司ID为字节
作为字符串的公共属性代码
末级
部分公共C类
公共属性C_Id为整数
公共属性B_代码作为字符串
公共财产帐户号码
末级
C类上的B_代码字段对应于B类上的代码

我希望能够修改B类,如下所示:

Partial Public Class A
    <Key>
    <Column("CoID", Order:=0)>
    Public Property CompanyId As Byte
    
    <Key>
    <Column("BNum", Order:=1)>
    Public Property B_Number as Integer
    
    Public Property ID as String
    
    <ForeignKey("CompanyID, ID")>
    Public Overridable Property B As B  

End Class
Partial Public Class B
    <Key>
    <Column("CoID", Order:=0)>
    Public Property CompanyId As Byte
    
    <Key>
    <Column("BNum", Order:=1)>
    <StringLength(15)>
    Public Property Code As String

    <ForeignKey(?????)>
    Public Overridable Property C as ICollection(Of C)

End Class
部分公共B类
公共财产公司ID为字节
作为字符串的公共属性代码
作为(C的)ICollection的公共可重写属性C
末级

然后我可以编写
A.B.C.MarketAccountNumber
来获取数据,但我不确定在这种关系中外键应该放什么。我愿意接受任何能让我实现目标的建议。

你在这里提出的问题几乎没有遗漏。为什么不在B类上使用C.D_ID作为外键?有没有需要D_ID。老实说,如果我遵循逻辑(我承认我可能会有错误的方法),这就像B&C之间有一个1:m的值,这意味着B会有一个C列表,使导航属性在你不工作之后。也许你需要回顾一下你的数据库结构,也许你能给出你想要的关系图吗?@Hursey,你的想法是对的,这是一种1:M的关系。问题是我需要类B通过C.B_代码引用类C,而不是C.D_ID(编辑为C_ID)。多个C可以具有相同的B_代码,但C_Id是必需的。外键在父表中必须是唯一的。根据您介绍的内容,属性
code
在类
B
中不是唯一的,因此不能作为外键中的父列。谢谢,@jmcilhinney。