使用AsNoTracking验证失败

时间:2011-10-26 12:07:34

标签: c# entity-framework

我正在尝试在我的上下文中添加一个新实体:

article.Id = 1;
var rede = from r in mycontext.Redevable.AsNoTracking()
           where r.Matricule == "0001414"
           select r;

article.Redevable = rede.First<Redevable>();
...

mycontext.Article.Add(article);
mycontext.SaveChanges();

我得到一个DbEntityValidationException,表示Redevable是必需的,因为属性“Redevable”是标记为Required。

如果我删除“AsNoTracking”但效果非常糟糕,它可以正常工作。

你能帮帮我吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

您只能使用以下ID创建Fk属性:

public int RedevableId { get; set; }

public Redevable Redevable{ get; set; }

然后从Redevable实例设置它:

article.RedevableId = rede.First<Redevable>().Id;  

然后坚持你的改变:

mycontext.Article.Add(article);      
mycontext.SaveChanges();

答案 1 :(得分:0)

AsNoTracking()意味着您无法更新这些实体,而无需将它们重新连接到跟踪图。有关详细信息see

// Attaches the entity and then save
context.Entry(article).State = EntityState.Modified;
context.SaveChanges();