Net Core:将数据映射到存储库中的域层

问题描述 投票:0回答:1

我们正在使用Net Core,通过sql数据库实现Entity Framework。以前的软件仅具有数据模型和应用程序。

当前,我们正在获取数据级别的实体并将其映射到域层。

然后,整个应用程序与基于DDD的域模型层一起工作,而与数据库层和复杂性不符。

我们有异步方法。将Data对象带到Domain层时,我应该在哪里放置AutoMapper?

我正在阅读本文,并且1)直接将AutoMapper与Entity Framework结合使用是否有任何问题? 2)试图弄清楚这个新的Domain方法是否仍然可以异步工作((要确保由于Microsoft intellensense不会发送警告或错误,所以要确保)3)如果没有,如何将Automapper放置在哪里,同时将数据类映射到domain异步?

https://www.devtrends.co.uk/blog/stop-using-automapper-in-your-data-access-code

原始数据存储库:

    public async Task<Product> GetByProductId(int id)
    {
        var product = await unitOfWork.DBSet<Product>().FindAsync(id);
        return product;
    }

    public async Task<IEnumerable<Product>> GetAllActiveProducts()
    {
        var products = await unitOfWork.DBSet<Product>().ToListAsync();
        return products ;
    }

新域存储库:

    public async Task<ProductModel> GetByProductId(int id)
    {
        var product= await unitOfWork.DBSet<Product>().FindAsync(id);
        ProductModel productModel = mapper.Map<ProductModel>(product);
        return productModel ;
    }


    public async Task<IEnumerable<ProductDomainModel>> GetAllActiveProducts()
    {
        var products = await unitOfWork.DBSet<Product>().ToListAsync();
        IEnumerable<ProductDomainModel> productDomainModel = mapper.Map<IEnumerable<ProductDomainModel>>(products);
        return productModel;
    }
c# .net asp.net-core .net-core automapper
1个回答
0
投票

Well DDD不建议使用AutoMapper之类的基础架构来创建域模型。您可以在域对象本身(聚合根/实体)上使用工厂方法。

例如class ProductDomainModel {

private ProductDomainModel(){}

公共静态ProductDomainModel创建(prop1,prop2){

返回新的ProductDomainModel {prop1 = prop1,prop2 = prop2};}

}

© www.soinside.com 2019 - 2024. All rights reserved.