我有一个包含这两个实体的域模型:
零件和合同。
合同有多个部分,一部分可能属于许多合同。
我用这种方式代表:
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进行数据库层。
答案 0 :(得分:2)
我对NHibernate比实体框架更熟悉,但通常的方法是使用事件处理:在保存对象之前注册一个委托以运行,并使用此委托更新元数据。
如果您最终拥有包含此类元数据的多个类,则可以创建名为IHasUpdatedDate
的接口。在我的项目中,我的所有实体都有WhenUpdated&amp; WhenCreated字段。
似乎实体框架确实支持事件处理: