【发布时间】:2014-08-17 22:37:46
【问题描述】:
我正在将我的项目从 EF 4.0 迁移到 EF 6.0。 插入新实体后,我试图从导航实体中获取属性。该代码在 EF 4.0 中运行没有任何问题,但是当我尝试在 EF 6.0 中运行时,我遇到了 NullReference 异常。
用户实体:
public partial class users
{
public int RID { get; set; }
public string Name { get; set; }
public Nullable<int> LangRef { get; set; }
public virtual language language { get; set; }
}
语言实体:
public partial class language
{
public language()
{
this.users = new HashSet<users>();
}
public int RID { get; set; }
public string Name { get; set; }
public virtual ICollection<users> users { get; set; }
}
测试代码:
test1Entities testEnt = new test1Entities();
users user = new users();
user.Name = "asd";
user.LangRef = 1;//That ID refer to English record in Language entity
testEnt.users.Add(user);
testEnt.SaveChanges();
string lang = user.language.Name;//Should return "English". However language property seem null
型号:
【问题讨论】:
-
你在哪里为新用户设置语言属性?您可以设置显式外键,例如 languageId 或将语言属性设置为 DbContext 正在跟踪的语言实体。
-
您查看过msdn 上的文档吗?在我看来,语言和 LangRef 属性没有被正确映射。
-
@kjbartel 我正在使用数据库优先方法。我不对自动生成的代码进行任何编辑。该模型应该可以正常工作。我找不到哪里出错了。
-
我会尝试重新生成模型。不确定您是否自定义了任何模板,但作为测试,您可以创建一个新项目并从头开始创建一个新模型,看看它是否有效。我想模板在 4 到 6 之间发生了一些变化,所以你可能不能按原样使用旧的。
标签: c# .net entity-framework entity-framework-6