前言:我无法控制数据库架构。在这个问题中,我重新命名了字段/表格,以便更容易理解。我在我的例子中包含了[Key]和[ForeignKey()]注释,但我真的试图用流畅的api来定义它。
public partial class Person
{
[Key]
public int p_id{ get; set; }
[Key]
public int p_id2{ get; set; }
public int? p_document_id { get; set; }
[ForeignKey("p_document_id")
public virtual ICollection<Document> Documents { get; set; }
}
public partial class Document
{
[Key]
public int d_id { get; set; }
[Key]
public int d_id2 { get; set; }
//implied?
//public virtual Person Person {get; set;}
}
一个人可能有0或多个文件。文件必须属于一个人。每个表都有一个复合键。
以下是数据库外观的示例:
p_id p_id2 p_document_id
1 a NULL
1 b NULL
2 a 555
2 b 666
d_id d_id2
555 x
555 y
666 x
在此示例中,人1没有文档,但人2有3个文档。 Person.p_document_id = Document.d_id,d_id2仅用于提供复合唯一ID。
无论如何用流利的api建立这种关系与我一起工作,我无法添加任何新的列。