小编ayk*_*ayk的帖子

DDD - 持久性模型和领域模型

我正在尝试学习域驱动设计(DDD),我认为我有了基本的想法.但是有些让我困惑的事情.

在DDD中,持久性模型和域模型是不同的东西?我的意思是,我们设计的域名和类只考虑了域名问题; 没关系.但在那之后,当我们构建我们的存储库或任何其他数据持久性系统时,我们是否应该创建另一个模型以在持久层中使用?

我在想我们的域模型也用于持久化,这意味着我们的存储库从查询返回我们的域对象.但今天,我读了这篇文章,我有点困惑:

刚刚停止!域模型不是持久性模型

如果这是真的,那么从域对象中获得单独的持久性对象会有什么好处?

oop domain-driven-design model repository repository-pattern

51
推荐指数
3
解决办法
2万
查看次数

公开基础库中定义的枚举类型

我正在尝试修改我的日志库.这是我被困的地方.我使用枚举,让我们称之为ActionType,以识别我的操作,如UserLogin,PurchaseOrder ......数百个.我在记录器方法中使用这种类型.但是,由于松散耦合和基础库无法访问项目中定义的ActionType,我从我的项目特定代码中分离我的记录器库,我该如何实现这一点.为了澄清它,让我在java中解释相同的情况.Java允许枚举实现接口.所以我可以写:

在基本记录器库中,我可以定义;

public interface IActionType {}

在我的几个项目之一

public enum ActionType implements IActionType {UserLogin, PurchaseOrder, .....}

因此,当我调用我的 logger.log(ActionType.UserLogin, ....)基础库时,将获得基础操作.这一切都足够了.在c#中有没有在它周围完成这个?顺便说一句,我考虑使用IoC容器,但我想要更优雅的东西.

非常感谢任何帮助......

c# enums interface

7
推荐指数
1
解决办法
1690
查看次数

具有新触发器集的Quartz.NET重新计划作业

我有一个Quartz作业,该作业计划有一组触发器,执行时间为3到5分钟。但是在将来的任何时候(可能是一周后或几分钟后),我可能都需要使用新的触发器集重新安排它的时间。触发器集上会有一些添加或删除。

如何使用新的触发器集重新计划作业?这里的窍门是,我想确保当时没有活着的工作实例,这样我就可以可靠地重新计划我的工作了。谢谢你的帮助...

.net c# quartz-scheduler job-scheduling

6
推荐指数
1
解决办法
5266
查看次数

实体框架5.x 6.x缓存框架

我在当前项目中使用EF5,我将其升级到EF6.我知道EF有一个内部查询缓存.这一切都很好,但我认为这对我的需求来说还不够.我想使用像memcache或redis这样的缓存服务器.我知道Nhibernate有一些非常好的appender,比如memcache.我发现NCache有一个快速的互联网搜索.但它的文档和样本似乎已经过时了.所以我不确定我是否可以使用它.EF5或EF6有稳定的缓存提供程序吗?

c# memcached caching entity-framework redis

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

如何从存储库中检索域对象

我对存储库域对象关系有一点了解.以下是我对域名设计所了解的一些信息(它们也可能是错误的或不准确的).考虑到这些,我找不到从存储库中获取域对象的方法.

在DDD中,域名应该只知道并包含业务所需的内容,其他所有内容都必须从域中清除.没关系.而且,从任何企业抽象数据访问也是一种很好的做法.应用程序不需要知道我们存储数据的位置或存储数据的方式.我们只要求存储库为我们提供一个域对象,它为我们提供了我们想要的对象,或者另一种方式也是有效的,我们给存储库一个域对象并将其发送到存储.

在面向对象设计中声明域对象的公共setter也是一种非常糟糕的方法,因为我们无法控制谁访问了什么并改变了什么.因此,最好只公开对象外部所需的内容.

因此,在我的脑海中,我无法找到实现我的存储库的方法.我可以在我的代码中使用任何ORM或纯sql并检索数据.

但我无法从持久性对象创建域对象;

  1. 由于他们没有公共设置器,我无​​法创建和设置字段值.
  2. 声明包含所有字段的公共构造函数似乎不正确.我可能有几个模型要填写,这意味着我必须定义几个具有不同参数集的构造函数.

任何帮助将不胜感激...

c# domain-driven-design ddd-repositories repository-pattern automapper

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