データベースに値があります
public int Rev { get; set; }
行が更新されるたびにRev+1に変更したいのですが、Entity Frameworkを初めて使用するため、これをプログラムする方法がわかりません。誰か助けてもらえますか?
データベースに値があります
public int Rev { get; set; }
行が更新されるたびにRev+1に変更したいのですが、Entity Frameworkを初めて使用するため、これをプログラムする方法がわかりません。誰か助けてもらえますか?
新しい部分クラスを作成して、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();
}
}
テーブルを更新するとフィールドがインクリメントされるトリガーを作成できます。
これを行うには、CreateDatabaseIfNotExistsから継承されたクラス、またはIDatabaseInitializerを実装してメソッドSeedをオーバーライドした別のクラスを作成します。
簡単な例を次に示します。
class CdineWithTrigger : CreateDatabaseIfNotExists<RepositoryContext>
{
protected override void Seed(RepositoryContext context)
{
context.Database.ExecuteSqlCommand("YOUR SQL CORE FOR ADDING A TRIGGER");
}
}