首页 > 解决方案 > 我应该将 DBContext 注入内部类吗?

问题描述

我有一个用于将属性映射到模型的内部类。我需要将模型上的新属性映射到单独的 dbcontext 实体。我应该也将 dbcontext 注入内部类还是有更好的方法?

public class MyRepository : IMyRepository{
    public readonly MyDbContext _context;
    public MyRepository(MyDbContext dbContext){
        _context = dbContext;
    }

    public List<MyStuff> Get(MyReq req){
        var myStuff = _context.MyStuff.Include(r => r.OtherStuff).AsNoTracking();

        myStuff.Where(x => x.StuffId == req.StuffId).ToList();

        var myStuffList = new List<MyStuff>();

        foreach(var dm in myStuff){
            var m = MyMapper.MapMyStuff(dm);
            myStuffList.Add(m);         
        }
        return myStuffList;
    }
}

internal class MyMapper{
    public static MyStuff MapMyStuff(MyStuff dm){
        var myStuffModel = new MyStuff(){
            StuffId = dm.StuffId,
            StuffName = dm.StuffName, StuffColor = dm.StuffColor, ...ect.
            TheirStuff = // need to pull from _context.TheirStuff
        }
    }
}

这可能会起作用,但我担心它可能会导致性能问题,因为它每次都会实例化一个新的 dbcontext。有没有更好的办法?

internal class MyMapper{
    public static MyStuff MapMyStuff(MyStuff dm){
        var _context = new MyDbContext();

        var myStuffModel = new MyStuff(){
            StuffId = dm.StuffId,
            StuffName = dm.StuffName, StuffColor = dm.StuffColor, ...ect.
            TheirStuff = _context.TheirStuff
        }
    }
}

标签: c#entity-frameworkef-core-5.0

解决方案


推荐阅读