我正在尝试在LINQ to SQL中建模数据库。我有一张表JournalPosts。每个实体与一个或多个发件人或收件人相关联。我的表“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; }
问题是,我得到一个“对象引用未设置为对象的实例”。我尝试创建数据库时出错。但是,如果我在另一个表中指定Column属性(SenderRecipients)而不是Association-attributes,它可以工作(但是这些列不会被设置为数据库中的外键 - 这就是我想要的)。