相关疑难解决方法(0)

存储库模式和域模型与实体框架之间的映射

我的存储库处理并为丰富的域模型提供持久性.我不想将贫血的Entity Framework数据实体暴露给我的业务层,所以我需要一些在它们之间进行映射的方法.

在大多数情况下,从数据实体构造域模型实例需要使用参数化构造函数和方法(因为它很丰富).它不像属性/字段匹配那么简单.AutoMapper可用于相反的情况(映射到数据实体),但不能用于创建域模型.

以下是我的存储库模式的核心.

EntityFrameworkRepository类的工作有两个泛型类型:

  • TDomainModel:丰富的域模型
  • TEntityModel:实体框架数据实体

定义了两种抽象方法:

  • ToDataEntity(TDomainModel):转换为数据实体(for Add()Update()方法)
  • ToDomainModel(TEntityModel):构建域模型(用于Find()方法).

这些方法的具体实现将定义所讨论的存储库所需的映射.

public interface IRepository<T> where T : DomainModel
{
    T Find(int id);
    void Add(T item);
    void Update(T item);
}

public abstract class EntityFrameworkRepository<TDomainModel, TEntityModel> : IRepository<TDomainModel>
    where TDomainModel : DomainModel
    where TEntityModel : EntityModel
{
    public EntityFrameworkRepository(IUnitOfWork unitOfWork)
    {
        // ...
    }

    public virtual TDomainModel Find(int id)
    {
        var entity = context.Set<TEntityModel>().Find(id);

        return ToDomainModel(entity);
    }

    public virtual void …
Run Code Online (Sandbox Code Playgroud)

.net domain-driven-design entity-framework repository-pattern onion-architecture

42
推荐指数
3
解决办法
4万
查看次数

关于将实体映射到域对象的建议

我目前正在开展一个项目,我们开始使用DDD方法构建应用程序.我们现在首先考虑使用Entity Framework 6代码来帮助我们处理数据持久性.我的问题是如何最好地处理我们的域对象和EF实体之间的数据映射?

c# domain-driven-design entity-framework

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

JPA实体和DDD实体应该属于同一类吗?

根据DDD,有些类是实体,有些类具有@javax.persistence.Entity注释。他们应该是同一班吗?还是JPA实体应仅充当映射器(https://martinfowler.com/eaaCatalog/dataMapper.html)从数据库加载DDD实体(并将其存储)并保留在域模型之外的机制?

如果将数据库元数据分离并存储在外部(例如,以XML格式),会有所不同吗?如果此类是实体,边界在哪里?我认为从XSD(例如,使用JAXB)甚至使用MyBatis Generator从数据库生成的类都不是DDD中所理解的实体。

orm domain-driven-design jpa mybatis mybatis-generator

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