2011-07-02 53 views
0

将业务逻辑添加到“代码优先”模型并将其保存到数据库之前执行的最简单(少代码)的方法是什么?覆盖保存方法或使用EF4添加保存事件

例如给出的Albums model from the music store example

public class Album 
{ 
    public string Title { get; set; } 
    public Genre Genre { get; set; } 

    public DateTime LastUpdated { get; private set;} 
} 

例如如果我们增加一个LastUpdated属性的例子,我们如何能保证如果实体更新它的自动设置 - 也许在节省使用像成才

private void album_OnSave() 
{ 
    this.LastUpdated = DateTime.Now; 
} 

回答

1

LASTUPDATED必须是模型的一部分。为了确保属性是最新的,我将使用一个存储库,插入或更新相册的函数应该设置LastUpdated。

+0

我知道LASTUPDATED必须是模型的一部分 - 已经编辑Q的上清晰。不知道你是什么意思的存储库等 - 是不是EF的要点之一,你不必做那样的事情,只是改变属性,它需要照顾持久性? – Ryan

+0

使用MVC存储库中的很多示例。你可以自由地不使用它们,但它会使你的应用程序的其他层不再那么独立。 – ZippyV

+0

right - 将不得不在存储库上阅读一下 – Ryan

0

另一种替代方法是在数据库创建期间创建更新LastUpdated列的触发器。

+0

真的不想使用触发器,因为数据库特定的并且在模型中不可见以及业务逻辑(LastUpdated)不正确的地方仅仅是一个例子 - 触发器可能会变得混乱复杂的例子。 – Ryan