我正在尝试在 LINQ to SQL 中对数据库进行建模。我有一张表 JournalPosts。每个实体都与 1 个或多个发件人或收件人相关联。我的表“JournalPosts”中有以下复合主键:
[Column(IsPrimaryKey = true)]
public int CaseYear { get; set; }
[Column(IsPrimaryKey = true)]
public int CaseSequenceNumber { get; set; }
[Column(IsPrimaryKey = true)]
public int DocumentNumber { get; set; }
我在 JournalPosts 中定义了这样的一对多关系:
private EntitySet<SqlSenderRecipient> senderRecipients;
[Association(OtherKey = "CaseYear, CaseSequenceNumber, DocumentNumber", Storage="senderRecipients")]
private EntitySet<SqlSenderRecipient> SenderRecipients
{
get { return senderRecipients; }
set
{
senderRecipients.Assign(value);
}
}
在我的另一个表(SenderRecipients)中,我尝试定义如下字段:
[Association(IsForeignKey=true)]
public int CaseYear { get; set; }
[Association(IsForeignKey=true)]
public int CaseSequenceNumber { get; set; }
[Association(IsForeignKey=true)]
public int DocumentNumber { get; set; }
问题是,我得到一个“对象引用未设置为对象的实例”。尝试创建数据库时出错。但是,如果我在另一个表(SenderRecipients)中指定 Column 属性而不是 Association-attributes,它可以工作(但是这些列没有设置为数据库中的外键 - 这是我想要的)。