2013-02-21 104 views
0

伊夫在數據庫實體框架變化值

public int Rev { get; set; } 

得到了價值,我想改變它,在每個行更新啓+ 1,但由於我是新來的實體框架我不知道如何對此進行編程。有人可以幫忙嗎?

+1

無論何時你在你的代碼中更新,執行'Rev = Rev + 1'? – 2013-02-21 20:03:22

+0

無處 - 我想知道如何做到這一點,而如果我在setter方法中更新它,我擔心,每當我調用Context.Save()方法與任何加載的行時,它都會更新 - 即使我沒有做任何更改它。 – CodeDemen 2013-02-21 20:08:30

+0

@CodeDemen這個領域的目的是什麼?你想知道實體保存到數據庫的確切次數? – 2013-02-21 20:09:58

回答

1

您可以創建一個新的部分類重寫的SaveChanges(您EF對象)方法。在SaveChanges()方法中,您可以檢查YourTableEntity的每個條目以查看它是否被修改,如果是,則增加Rev屬性。

​​
+0

如果不能直接在SQL表上創建觸發器,那麼這就是我要爲數據庫首先執行的操作。 – AndrewR 2013-02-21 20:44:33

+0

+1完美!很好的解決方案 – 2013-02-21 20:46:19

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"); 
    } 
}