复合外键的一对多关系?

时间:2009-07-13 10:25:34

标签: linq-to-sql foreign-keys one-to-many

我正在尝试在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,它可以工作(但是这些列不会被设置为数据库中的外键 - 这就是我想要的)。

0 个答案:

没有答案