小编Ver*_*ern的帖子

简单的聚合根和存储库

我是众多试图理解聚合根的概念之一,我认为我已经掌握了它!但是,当我开始为这个示例项目建模时,我很快陷入了两难境地.

我有两个实体ProcessTypeProcess.一个Process不能存在没有ProcessTypeProcessType拥有众多Process上课.所以一个进程持有一个类型的引用,没有它就不能存在.

那应该ProcessType是聚合根?通过调用创建新进程processType.AddProcess(new Process()); 但是,我有其他实体只持有Process对它的引用,并通过它访问它的类型Process.Type.在这种情况下,ProcessType首先没有任何意义.

但聚合之外的AFAIK实体仅允许保留对聚合根的引用,而不允许对聚合内的实体进行引用.那么这里有两个聚合,每个聚合都有自己的存储库吗?

domain-driven-design aggregate repository

5
推荐指数
2
解决办法
3234
查看次数

.NET 4代码合同:"要求未经证实:source!= null"

我刚开始在项目中使用代码契约.但是,我的存储库实现存在问题,它使用实体框架查询我的数据库.

我有以下方法:

public IEnumerable<Organization> GetAllOrganizations()
{
    return _uow.CreateSet<Party>().OfType<Organization>().AsEnumerable();
}
Run Code Online (Sandbox Code Playgroud)

该方法返回一个包含数据库中所有组织的集合,或者一个空集合,它不是数据库中的组织.

但是,根据CodeContracts,这是不行的,它给了我错误:"需要unproven:source!= null"

它试图告诉我什么?我可以通过使用Contract.Assume来满足代码契约,假设它总能找到一些东西,但是我需要在从数据库中读取数据的所有方法中都这样做.

我在这里遗漏了什么,或者当你使用数据库和LINQ时,它是否是预期的行为?

.net linq code-contracts

5
推荐指数
1
解决办法
1750
查看次数