2011-06-09 89 views
0

我有一個這樣的實體。比方說,這個名字是唯一的:如何在保存之前填充EF實體中的屬性?

public class MyEntity 
{ 
    public Guid Id { get; set; } // immutable 
    public string Name { get; set; } // can be changed 

    // These are not exposed on the domain layer. They're just bookkeeping fields. 
    public string CreatedBy { get; set; } 
    public DateTime DateCreated { get; set; } 
    public string UpdatedBy { get; set; } 
    public DateTime DateUpdated { get; set; } 
} 

如果我調用的SaveChanges之前填充2「更新」字段(),我的單位將被標記爲錯誤地改變,如果名稱沒有改變。因此,我需要在DbContext上掛接一個事件,以便在提交工作單元之前填充這兩個字段,但僅限於實際已更改的實體。

這樣的事件是否存在? nHibernate可以做到這一點嗎?

+0

可能重複[如何使用Code First EF4.1保存默認值到屬性?](http://stackoverflow.com/questions/5500464/how-can-i-add-default-values -to-A-財產時節省-使用代碼先ef4-1) – 2011-06-13 19:32:35

回答

3

在ObjectContext API中,事件SavingChanges直接在ObjectContext上。您可以處理此事件並使用ObjectStateManager查找所有修改/添加的實體,並根據需要處理它們。

ObjectContext APIDbContext API中,您可以直接覆蓋SaveChanges方法並執行相同操作。

流利的NHibernate只是NHibernate的擴展,用於流暢的代碼映射。 NHibernate對這種情況有更好的支持 - 它提供了custom listeners來解決這個問題。

相關問題