实体框架改变了价值观

时间:2013-02-21 19:56:14

标签: c# asp.net-mvc-4 entity-framework-5

我在数据库中有一个值

public int Rev { get; set; }

并且我想在每行更新时将其更改为Rev + 1,但由于我是Entity Framework的新手,因此我不知道如何对此进行编程。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

您可以创建一个新的分部类来覆盖EF对象上的SaveChanges()方法。在SaveChanges()方法中,您可以检查YourTableEntity的每个条目以查看它是否已被修改,如果是,则增加Rev属性。

public partial class YourDBNameDBEntities : DbContext
{
    public override int SaveChanges()
    {
        foreach (var entry in this.ChangeTracker.Entries<YourTableEntity>().ToList())
        {
            if (entry.State == System.Data.EntityState.Modified)
            {
                entry.Entity.Rev++;
            }
        }
        return base.SaveChanges();
    }
}

答案 1 :(得分:0)

您可以创建triger,这会在您更新表格时增加字段。

您可以通过创建从CreateDatabaseIfNotExists继承的类或其他实现IDatabaseInitializer并重写方法Seed的类来完成此操作。

这是一个简短的例子:

class CdineWithTrigger : CreateDatabaseIfNotExists<RepositoryContext>
{
   protected override void Seed(RepositoryContext context)
   {
      context.Database.ExecuteSqlCommand("YOUR SQL CORE FOR ADDING A TRIGGER");
   }
}
相关问题