草庐IT

domain-driven-design

全部标签

c# - 使用 Entity Framework 将项目添加到集合

我正在尝试使用EntityFramework4遵循DDD存储库模式。但是我在保存对聚合根的集合属性的更改时遇到了问题。考虑我下面的类(class)。Item是我的聚合根,其中包含SubItem实体的集合。publicclassItem{publicintItemId{get;set;}publicstringName{get;set;}publicICollectionSubItems{get;privateset;}publicItem(){this.SubItems=newHashSet();}}publicclassSubItem{publicintItemId{get;set;

c# - 延迟域事件的创建和调度

我一直在使用DomainEventspattern一段时间以来-它使我们能够在我们的领域层中封装尽可能多的行为,并为我们应用程序的其他部分提供一种很好的方式来订阅领域事件。目前我们正在使用一个静态类,我们的域对象可以调用它来引发事件:staticclassDomainEvents{publicstaticIEventDispatcherDispatcher{get;set;}publicstaticvoidRaise(TEvente){if(e!=null){Dispatcher.Dispatch(e);}}}如您所见,这只不过是IEventDispatcher的垫片。它实际上执行调度

c# - 以编程方式为 resx 文件生成 Designer.cs (ResXResourceWriter/ResXResourceReader)

我正在使用不生成.Designer.cs文件的ResXResourceWriter/ResXResourceReader在TFS中创建/更新resx文件。我看到Resgen创建了.Designer.cs。我如何以编程方式调用它以在某个TFS文件路径生成.Designer.cs?是这样的吗?ProcessStartInfostartInfo=newProcessStartInfo(@"C:\ProgramFiles\Microsoft.NET\SDK\v2.064bit\Bin\ResGen.exe");startInfo.WindowStyle=ProcessWindowStyle.M

c# - 缓存存储库、域或应用程序是否值得关注?

我试图弄清楚哪一层应该负责域驱动设计项目中的缓存(插入/删除)工作。目标是通过缓存从存储库检索到的任何实体来提高Web应用程序的性能。我的解决方案如下:MyApp.InfrastractureMyApp.RepositoriesMyApp.DomainMyApp.WebApplication我觉得既然只有Web应用程序使用缓存,那么缓存逻辑应该放在这一层吗?然而,这感觉不正确,因为我想保持Web应用程序的轻量级并专注于提供网页。缓存也不是一流的领域概念,因此不适合领域层。怎么办? 最佳答案 这是以上所有问题的关注点。缓存是其中一个横

c# - 我的 DDD 工厂类中应该有哪些方法?

我很难理解我的工厂类在我的DDD项目中应该做什么。是的,工厂应该用于创建对象,但它究竟应该做什么。考虑以下工厂类:publicclassProductFactory{privatestaticIProductRepository_repository;publicstaticProductCreateProduct(){returnnewProduct();}publicstaticProductCreateProduct(){//Whatelsewouldgohere?}publicstaticProductGetProductById(intproductId){//Shouldi

c# - DDD : Enum like entities

我有以下数据库模型:**Persontable**ID|Name|StateId------------------------------1Joe12Peter13John2**Statetable**ID|Desc------------------------------1Working2Vacation领域模型将是(简化的):publicclassPerson{publicintId{get;}publicstringName{get;set;}publicStateState{get;set;}}publicclassState{privateintid;publicstri

c# - 在存储库模式中加载子记录

使用LINQTOSQL作为基于存储库的解决方案的基础。我的实现如下:IRepositoryFindAllFindByIDInsertUpdateDelete然后我有用于查询结果的扩展方法:WhereSomethingEqualsTrue()...我的问题如下:我的用户存储库有N个角色。我是否创建角色存储库来管理角色?我担心如果我走这条路,我最终会创建几十个存储库(每个表几乎1个,除了Join表)。每个表的存储库是否常见? 最佳答案 如果你正在构建你的存储库以特定于一个实体(表),这样每个实体都有你上面列出的IRepository接口

c# - 领域驱动设计适合我的项目吗?

我一直在阅读thisebookaboutDDD它说只有高度复杂的系统才适合DDD架构。这让我再次猜测我决定更多地转向DDD作为我的架构。我正在将经典的ASP应用程序逐节转换为.NET。它包括一个强大的产品分类方案和每天收到约100-200个订单的购物车,以及一个类似于YouTube的视频部分(视频和社交功能,如评分、评论等)。由于我已将其分块转换,因此我想将站点的每个区域视为单独的项目。该站点不断获得新功能,并且需要易于维护和更新。现在我只是使用一个基本的自制ADO.NETDAL,其中BLL和DTO充当公共(public)层。对于这个项目,使用与DDD不同的架构会更好吗?我是架构新手,

c# - 禁用/修复 .Designer.cs 文件中的代码分析警告

我正在广泛使用DataVisualization.Charting.Chart,而且大部分情况下它都能正常工作。但是,我经常运行代码分析,并处理了我自己的所有警告。但是,在使用图表的*.Designer.cs文件中大约有30个CA2000(对象未沿所有异常路径放置)。Designer文件生成了几乎所有的图表代码,并且几乎所有的图表元素都实现了IDisposable。我在项目首选项中选中了“抑制生成代码的结果”,但它仍然如此。有什么方法可以解决这个问题,而不必手动创建图表对象,也不必为该类中的其余代码禁用代码分析?有没有办法为所有.Designer.cs文件禁用它?或者,是否有一种解决方

c# - 我应该在 DDD 中的什么地方进行独特的检查?

我正在从事我的第一个DDD项目,我想我了解实体、数据访问对象及其关系的基本角色。我有一个基本的验证实现,它存储每个验证规则及其关联的实体。这适用于仅适用于当前实体的规则,但在需要其他数据时会分崩离析。例如,如果我有用户名必须是唯一的限制,我希望IsValid()调用在存在具有当前名称的现有用户时返回false。但是,我没有找到任何干净的方法来将此验证规则保留在实体本身上。我想在实体上有一个IsNameUnique函数,但大多数解决方案都需要我注入(inject)一个用户数据访问对象。这个逻辑应该在外部服务中吗?如果是这样,我如何仍然保持实体本身的逻辑?或者这是应该在用户实体之外的东西?