如何在具有实体框架的存储库模式中使用已使用的已定义类型

时间:2017-12-01 10:26:20

标签: c# entity-framework entity-framework-6 repository-pattern

我正在尝试使用实体框架(EF6来理解和实现存储库和工作单元模式;不确定EF6是否真的有必要)。我理解这种方法,但我仍然没有问题。

这是我所指的代码:

public interface IRepository<TEntity> where TEntity : class
{
    IEnumerable<TEntity> GetAll();
    void RemoveRange(IEnumerable<TEntity> entities);
    //others
}

public class Repository<TEntity> : IRepository<TEntity> where TEntity : class
{
    protected readonly DbContext _context;

    public Repository(DbContext context)
    {
        _context = context;
    }

    public IEnumerable<TEntity> GetAll()
    {
        return _context.Set<TEntity>().ToList();
    }

    public void RemoveRange(IEnumerable<TEntity> entities)
    {
        _context.Set<TEntity>().RemoveRange(entities);
    }

    //And others
}

我的DB痉挛回购

public interface ICourseRepository : IRepository<Course>
{
    IEnumerable<Course> GetCourseWithAuthors();
}

要在我的业务中获取数据,我必须这样做

List<Course> courseWithAuthor = repo.GetCourseWithAuthors();

现在,如果我们查看返回IRepository<Course>的{​​{1}}和方法IEnumerable<Course> GetCourseWithAuthors();。我的问题是IEnumerable<Course>是我们的实体框架自动生成的模型,我不想在我的业务中使用它。

背后的原因可能是在一些糟糕的日子我必须改变表名。然后更新实体并再次返回业务,将Course更改为新的名称。

可能Course表有5列,我只想要课程和作者姓名,然后dbo.Course中的其他属性将为Course

可能还有其他人。

如果我的观点合理,如何解决这个问题。

0 个答案:

没有答案