2012-03-15 63 views
0

如果我有一個DbEntityEntry項,我訪問當前值:實體框架4.3的Code First:設置繼承房產時的SaveChanges

var currentValues = entry.State != EntityState.Deleted 
    ? entry.CurrentValues 
    : null; 

後來,我想設置一個屬性值:

currentValues["Created"] = DateTime.Now; 

我想你能猜出這是:)

然而,創建財產存在於基本的實體類和我收到嘗試訪問屬性時出錯:

'Created'屬性不存在或未映射爲 'MyEntity'類型。

這是因爲該屬性位於繼承的基類中。

如何設置屬性?

非常感謝,

理查德

回答

0

不要使用CurrentValues。直接使用實體。

if (entry.State != EntityState.Deleted && entry.Entity is YourBaseClass) 
{ 
    YourBaseClass entity = (YourBaseClass)entry.Entity; 
    entity.Created = DateTime.Now; 
} 
+0

非常好,比你!順便說一句,有沒有什麼辦法可以在驗證運行之前填充這些值,以便填充正確的值?我在SaveChanges重寫中使用它,但是我希望它能夠掛鉤使用的任何驗證方法(例如直接在實體上)。 – Richard 2012-03-16 03:46:36

+0

對不起,我不確定你說的是什麼意思。 – 2012-03-16 09:23:09