我对 EF 比较陌生。在我调用 SaveChanges 后,相关的表数据似乎不可用。
假设我有一个包含以下表格的数据库:User、Feature 和 FeatureUser。FeatureUser 将 User 和 Feature 记录联系在一起。我有一个接受 Feature 对象的方法,它根据 FeatureUser 表使用 User.name 值填充列表。这工作正常:
using (var db = new projectModel())
{
feature f = db.features.First();
populateList(f);
}
private void populateList(feature f)
{
foreach(featureuser fu in f.featureusers)
addToList(fu.user.name);
}
上面代码中的重点是我通过 FeatureUser 表的内置链接返回 User.name 值,返回到 User 表。不起作用的是创建新的 FeatureUser 记录,然后保存它们,然后尝试遵循相同的过程:
using (var db = new projectModel())
{
feature f = db.features.First();
foreach(int newuserid in somearray)
{
featureuser nfu = new featureuser();
nfu.featureid = f.id;
nfu.userid = newuserid;
f.featureusers.add(nfu);
}
db.SaveChanges();
populateList(f); // null reference error on fu.user.name
}
一旦我建立并保存了创建关系所需的外键,有没有办法告诉 EF 解决所有这些方便的内置关系集合?