MVC,实体框架,业务逻辑

时间:2010-09-21 19:14:37

标签: asp.net-mvc entity-framework business-logic

虽然我相信我对MVC(来自Rails)有很好的把握,但我正在学习使用ASP.NET MVC的“MS Way”。

另外,我也在学习实体框架。

我在我的Models文件夹中创建了一个名为User的实体。使用LINQ to EF我可以检索记录,一切都很好。

现在,我想把一些业务(或我称之为域)逻辑放进去。但在我看来,EF更多的是DAL。所以我创建了一个名为“Domain”的文件夹,在那里,我为一些业务规则创建了一个类。

其中一个是加密密码。

所以我可以在我的控制器中使用以下内容:

string password = Domain.User.EncryptPassword(string salt, string password);

此外,这意味着域逻辑可以在需要持久保存到数据库时访问EF用户。

这个逻辑是否合理?

任何建议表示赞赏。

谢谢!

3 个答案:

答案 0 :(得分:3)

我唯一要问的是:“为什么用户,一个人知道如何加密或散列密码?”

加密密码将成为Application层的一部分。这几乎是反DDD。

答案 1 :(得分:2)

这取决于项目,但通常我们:

  • 不要在EF模型中放置任何代码,所有模型都存储在单独的项目中
  • 在MVC代码和EF之间放置一个业务层。在以前的EF版本中,这将用于将EF对象映射到域对象,但是使用POCO不再需要它。任何缓存都将在此层中完成。
  • 使用帮助程序或实用程序类进行加密

答案 2 :(得分:1)

我认为您正在寻找的是POCO(普通旧CLR对象)。一方面,您拥有EF实体。另一方面,您拥有自己的域或业务实体......然后您可以映射它们......您的DAL层必须返回POCO实体而不是EF实体..至少这是如何在3层应用程序中进行的。我想这是MVC应用程序中的相同方法......

我是对的吗?