gpt4 book ai didi

asp.net-mvc - 向 POCO 类添加方法

转载 作者:行者123 更新时间:2023-12-04 15:03:03 25 4
gpt4 key购买 nike

我有以下设置:MVC > 服务 > 存储库。现在我想让用户能够向文档添加注释。只有与文档关联的用户(作为所有者或审阅者)才能添加注释,因此在我的 NoteService 中,我执行以下操作以确保用户对所选文档具有权限:

public Note GetNewNote(int documentID)
{
if (!userHasAccess(Thread.CurrentPrincipal.Identity.Name))
throw new BusinessLogicException();

// Other stuff here...
}

我的问题是,我应该在哪里定义 userHasAccess 方法?在 NoteService 中它没有意义,因为它正在检查文档。我可以在 DocumentService 中定义它,但随后 NoteService 将需要访问它,这似乎引入了更多的耦合。

对我来说,在 Document POCO 本身上定义它然后调用 document.userHasAccess(...) 更有意义。这是好的做法还是域 POCO 应该仅限于简单的属性?我担心这确实是验证的一部分,并且通过将方法放在 POCO 中,我将服务和 POCO 之间的验证分开。

我试图确保我的应用程序易于维护和测试。任何关于我应该如何解决这个问题的建议将不胜感激!

最佳答案

Where should I define the userHasAccess method?



与设计的其余部分保持一致是有意义的,虽然我不知道完整的设计,但我至少可以说 POCO 本身上名为 UserHasAccess() 的方法是有意义的。

Should a domain POCO be limited to simple properties?



不,域 POCO 应该包含与对象相关的逻辑(尤其是验证逻辑)。否则,它最终会成为 object with no behaviour - 你绝对应该避免的东西。

但是,不要混淆域(业务)对象和 View 对象,它们通常包含很少的逻辑。

You are concerned that you are separating the validation between Service and POCO.



我将验证放入 POCO,并在服务中放入跨域逻辑。

关于asp.net-mvc - 向 POCO 类添加方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8535199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com