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 では、次のように 1 対多の関係を定義します。
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; }
問題は、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というメッセージが表示されることです。データベースを作成しようとするとエラーが発生します。ただし、Association-attributes の代わりに他のテーブル (SenderRecipients) で Column 属性を指定すると、機能します (ただし、列はデータベースで外部キーとして設定されません。これが必要です)。