实体框架:无法向交叉引用表添加条目

时间:2015-01-27 12:51:50

标签: c# sql-server entity-framework

在我的数据库中,我有以下表格:

st_dictionary
    id
    [other fields]

st_language
    id
    [other fields]

st_dictionary_language
    dictionary_id
    language_id

当我创建这些(和其他)表的实体模型时,实体框架看起来足够聪明,可以“凝聚”这些表格。将st_dictionary_language交叉引用表转换为

public partial class st_dictionary
{
    public virtual ICollection<st_language> st_language { get; set; }
    [other members]
}

正如预期的那样,此属性使用通过交叉引用表链接的st_language实体填充。

但是,当我希望将另一种语言引用到此st_dictionary实体时,我遇到了一个问题:

daoDictionary.st_language.Add(new st_language { id = newLangID });

上面的代码抛出一个异常,其中列出了一系列验证错误,每个错误都解释了一些st_language属性不能为空。这些非null属性都存在于st_language数据库表中,而不存在于交叉引用表中。

那么如何在st_dictionary_language表中添加新条目?

1 个答案:

答案 0 :(得分:1)

您必须添加您希望交叉引用的实际实体,而不是传入新对象(在您的示例中,您只填充id属性)。

看看你的例子,可能是这样的:

var daoLanguage = [retrieve the st_language entity via the Entity Framework];
daoDictionary.st_language.Add(daoLanguage);
祝你好运!