首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体中的验证方法

实体中的验证方法
EN

Stack Overflow用户
提问于 2012-03-31 00:46:08
回答 2查看 71关注 0票数 0

我正在使用Domain-Driven-Design,有一个名为Menu的实体,需要检查项目是否有三个级别,类现在如下所示:

代码语言:javascript
复制
 public class Menu : Entity
    {

        public virtual AreaMenu AreaMenu { get; set; }

        public virtual Menu MenuPai { get; set; }

        public string Title{ get; set; }

        public virtual Site Site { get; set; }

        public Status Status { get; set; }

        public byte StatusId
        {
            get { return (byte)Status; }
            set { Status = (Status)value; }
        }

        public bool VerifyLevels()
        {
            if (this.MenuPai == null || this.MenuPai.MenuPai == null || this.MenuPai.MenuPai.MenuPai == null || this.MenuPai.MenuPai.MenuPai.MenuPai == null)
                return true;

            return false;
        }
    }

这个检查级别(public bool VerifyLevels()),在实体中是正确的,还是在存储库中是正确的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-31 00:59:25

是的,在你的实体中放置验证是正确的。另一方面,您可以从存储库的Save方法中调用此验证,以便在保存之前进行验证

例如。

代码语言:javascript
复制
public class MenuRepository : IMenuRepository
{
    public bool Save(Menu menu)
    {
        if (!menu.VerifyLevels())
            return false;

        if (menu.ID == 0)
            context.Menus.AddObject(menu);
        else
            context.ObjectStateManager.ChangeObjectState(menu, EntityState.Modified);
        context.SaveChanges();

        returns true;
    }
}
票数 1
EN

Stack Overflow用户

发布于 2012-03-31 00:58:12

这取决于你的喜好。领域驱动设计更多的是一种思维方式,而不是一种行为方式。

有些人喜欢保持他们的实体模型层非常轻量级和整洁-因此不会在那里放任何验证。

在我个人看来,实体不是DTO(数据传输对象),因此不应该是贫血的。我不喜欢贫血域模型,因为这有损于代码重用:http://en.wikipedia.org/wiki/Anemic_domain_model

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9947163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档