触发器与模型更新

时间:2011-03-23 21:42:05

标签: c# .net entity-framework

我有一个包含这两个实体的域模型:

零件和合同。

合同有多个部分,一部分可能属于许多合同。

我用这种方式代表:

 class Contract 
 {
    ICollection<Part> Parts{get;set;}
    DateTime LastModifiedDate{get;set;}
 }

 class Part
 {
    ICollection<Contract> Parts{get;set;}
 }

每次合同的某个部分发生变更时,合同的LastModifiedDate必须反映发生变更的日期。

哪种方式更好的处理方式? :

1 - 使用数据库触发器

(这允许我捕捉对部件进行的修改,而无需通过我的应用程序进行修改)

2 - 或者使用模型,以便在零件级别进行更改时,我手动更改合约的LastModifiedDate?

3 - 是否有第三种方式允许使用两种方式做事?

4 - 我还有什么我想念的吗?

N.B:我正在使用Entity Framework CTP4进行数据库层。

1 个答案:

答案 0 :(得分:2)

我对NHibernate比实体框架更熟悉,但通常的方法是使用事件处理:在保存对象之前注册一个委托以运行,并使用此委托更新元数据。

如果您最终拥有包含此类元数据的多个类,则可以创建名为IHasUpdatedDate的接口。在我的项目中,我的所有实体都有WhenUpdated&amp; WhenCreated字段。

似乎实体框架确实支持事件处理:

http://msdn.microsoft.com/en-us/library/cc716714.aspx