使用BaseEntity创建一项服务来管理整个数据库,.NET Core,EntityFramework

时间:2019-01-26 19:21:50

标签: c# .net-core ef-code-first ef-core-2.1

我没有特别的问题,但问题是我不知道是否可以创建这样的服务:

我有一个仅包含ID的抽象基类,并且所有类(数据库中的模型)都从该类继承并具有其属性。

我的问题是,我只能使用一种服务,一种可以通过CRUD操作管理所有表/模型的方法吗?

这是我的存储库:

public class Repository : IRepository<db_context>
{
    private readonly db_context _dbContext;

    public Repository(db_context dbContext)
    {
        _dbContext = dbContext;
    }

    public T GetById<T>(int? id) where T : BaseEntity
    {
        return _dbContext.Set<T>().SingleOrDefault(e => e.Id == id);
    }

    public List<T> List<T>() where T : BaseEntity
    {
        return _dbContext.Set<T>().ToList();
    }

    public T Add<T>(T entity) where T : BaseEntity
    {
        _dbContext.Set<T>().Add(entity);
        _dbContext.SaveChanges();

        return entity;
    }
    ....
}

任何想法..?

1 个答案:

答案 0 :(得分:0)

很有可能,我不明白为什么不这样做。这主要是因为您几乎只是在重做DbContext已经完成的工作。正如 pinkfloydx33 所提到的,出于相同的原因,我也建议不要使用它。此外,从长远来看,这种抽象是行不通的。因此,您可能需要一些特定的功能,这些功能将使您的代码非常难看且难以维护。如果您试图创建某种形式的简化,则还可以考虑扩展功能。

话虽如此,如果您仍然有理由的话,再次很有可能。您也可以使用_dbContext.Add(entity)代替_dbContext.Set<T>().Add(entity),因为在该实例中.Set<T>()似乎毫无意义(与更新相同)。