Entity framework 当我尝试更新集合属性时,会收到UpdateException
我使用的是MVC4应用程序,我使用的是EF CodeFirst。 当我尝试运行以下代码时:Entity framework 当我尝试更新集合属性时,会收到UpdateException,entity-framework,asp.net-mvc-4,ef-code-first,Entity Framework,Asp.net Mvc 4,Ef Code First,我使用的是MVC4应用程序,我使用的是EF CodeFirst。 当我尝试运行以下代码时: public void Autorizare(int cerereId, Persoana persoana) { var cerere = _db.Cereri.Find(cerereId); cerere.Autorizare.Add(persoana); _db.SaveChanges
public void Autorizare(int cerereId, Persoana persoana)
{
var cerere = _db.Cereri.Find(cerereId);
cerere.Autorizare.Add(persoana);
_db.SaveChanges();
}
我得到一个类似这样的错误:
Entities in 'CerereDbContext.Persoane' participate in the 'Actiune_Executanti' relationship. 0 related 'Actiune_Executanti_Source' were found. 1 'Actiune_Executanti_Source' is expected.
我尝试了Entity(Activune).State=EntityState.Modified,但没有结果
我有一个主要的POCO:
public class Cerere
{
public int Id { get; set; }
...
public virtual ICollection<Actiune> Actiuni { get; set; }
...
}
在您的模型中,Cere没有名为Autorizare的属性;但是它确实有一个名为Actiuni的。它是Actiune类型,而不是Persoana类型,这是您试图添加到它中的。请发布类定义的其余部分。在my Cere:public virtual ICollection Autorizare{get;set;}中,您是否尝试将Cere entitystate设置为modified?EF需要知道您已经修改了cerere对象,否则它将尝试插入persona对象,而不更新cerere对象。
public class Actiune
{
public int Id { get; set; }
public DateTime Data { get; set; }
public String Nume { get; set; }
public virtual ICollection<Persoana> Executanti { get; set; }
public String Stadiu { get; set; }
public String Obs { get; set; }
}
public class Persoana
{
public int Id { get; set; }
public DateTime Data { get; set; }
public String Nume { get; set; }
}