我正在尝试更新一个实体,但是当我调用save更改时没有任何反应。这是我如何附加实体的代码。我顺便使用EF6.1和MVC5.1
var entity = db.Entity.Attach(existingEntity);
entity = new Entity(args0, args1, args2)
entity.Id = existingEntity.Id;
db.SaveChanges()
这是实体类:
public class Entity : Entity
{
public int Id { get; set; }
public string PropertyA { get; private set; }
public string PropertyB { get; private set; }
public string PropertyC { get; private set; }
}
public Entity(string args0, string args1, string args2)
{
this.PropertyA = args0;
this.PropertyB = args1;
this.PropertyC = args2;
}
请注意,我确实将属性setter设置为private,因为我在类中有一些内部工作。我认为EF无法更新实体的原因是因为我实例化了一个新实体,尽管我确实设置了它的主键。我也尝试将State更改为Modified但它只是运行“更新脚本”,但它并没有真正反映我对每个属性所做的更改
此方案的任何可能解决方案?
答案 0 :(得分:0)
我自己是MVC和EF的新手。但是这里有。
您是否使用私人套装混淆了DAL和BLL?
此外,当您已经拥有现有实体时,为什么不能直接更新实体的属性?您的类的设置方式只能创建,而不能修改。
最后,我认为你必须明确告诉EF nowEntity已被修改。
答案 1 :(得分:0)
var entity = new Entity(args0, args1, args2)
entity.Id = existingEntity.Id;
db.Entity.Attach(entity);
db.SaveChanges();