附加实体未更新

时间:2014-03-26 14:18:10

标签: asp.net-mvc-5.1 entity-framework-6.1

我正在尝试更新一个实体,但是当我调用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但它只是运行“更新脚本”,但它并没有真正反映我对每个属性所做的更改

此方案的任何可能解决方案?

2 个答案:

答案 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();