这是我第一次实施更加以域驱动的设计方法.我决定尝试使用Onion Architecture,因为它专注于域而不是基础架构/平台/等.

为了从实体框架中抽象出来,我创建了一个带有工作单元实现的通用存储库.
该IRepository<T>和IUnitOfWork接口:
public interface IRepository<T>
{
void Add(T item);
void Remove(T item);
IQueryable<T> Query();
}
public interface IUnitOfWork : IDisposable
{
void SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
实体框架的实现IRepository<T>和IUnitOfWork:
public class EntityFrameworkRepository<T> : IRepository<T> where T : class
{
private readonly DbSet<T> dbSet;
public EntityFrameworkRepository(IUnitOfWork unitOfWork)
{
var entityFrameworkUnitOfWork = unitOfWork as EntityFrameworkUnitOfWork;
if (entityFrameworkUnitOfWork == null)
{
throw new ArgumentOutOfRangeException("Must be of type EntityFrameworkUnitOfWork");
}
dbSet = …Run Code Online (Sandbox Code Playgroud) 我目前正在研究域驱动设计,并尝试将其应用于WPF项目.我观看了一些教程视频,并阅读了很多文章,例如:
我理解对接口和控制反转的关注.我读到有一些经常出现的层名称(域/核心用于表示知识领域,基础设施用于持久性,应用程序用于......我不明白),但它们会根据我阅读的文章而改变.有些人甚至没有出现.
是否有可能拥有一个理论上在洋葱架构中需要面对所有需求和问题的所有层的列表,它们的意图(它们包含什么样的代码,它们试图满足什么样的需要) ,他们需要参考哪一层),好吗?
.net c# architecture domain-driven-design onion-architecture