MVC、实体框架、业务逻辑
尽管我相信我已经很好地掌握了 MVC(来自 Rails),但我正在学习 ASP.NET MVC 的“MS 方式”。
另外,我也在学习实体框架。
我在模型文件夹中创建了一个名为 User 的实体。使用 LINQ to EF 我可以检索记录,一切都很好。
现在,我想放入一些业务(或者我所说的域)逻辑。但在我看来,EF 更多的是 DAL。因此,我创建了一个名为“Domain”的文件夹,并在其中为一些业务规则创建了一个类。
其中之一是对密码进行加密。
因此,我可以在控制器中使用以下内容:
string password = Domain.User.EncryptPassword(string salt, string password);
此外,这意味着域逻辑在需要持久保存到数据库时可以访问 EF 用户。
这个逻辑合理吗?
任何建议表示赞赏。
谢谢!
Although I believe I have a good grasp on MVC (from Rails), I'm learning the "MS Way" with ASP.NET MVC.
Also, I am learning Entity Framework as well.
I've created an Entity called User in my Models folder. Using LINQ to EF I can retrieve records and all is good.
Now, I want to put some business (or what I call, domain) logic in. But in my mind, EF is more of the DAL. So I created a folder called "Domain" and in there, I created a class for some business rules.
One of them is to encrypt passwords.
So I can use the following in my controllers:
string password = Domain.User.EncryptPassword(string salt, string password);
Also, that means the domain logic can access the EF User when it needs to persist to the DB.
Is this logic sound?
Any recommendations appreciated.
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
评论(3)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我唯一要问的是:“为什么一个用户,一个人,知道如何加密或散列密码?”
加密密码将是应用程序层的一部分。这几乎是反DDD的。
The only thing I would ask is: "Why would a user, a person, know how to encrypt or hash a password?"
Encrypting a password would be part of an Application layer. This is almost anti-DDD.