繁体   English   中英

使用存储库模式获取相关表实体框架

[英]Getting related tables entity framework using repository pattern

我的数据库中有这两个表,并且正在使用该示例的实体框架

在此处输入图片说明

我定义了以下IRepository接口

public interface IRepository<T> where T:class
    {
        void Add(T entity);
        void Update(T entity);
        void Delete(T entity);
        IQueryable<T> GetAll();
        T Find(int id);
    }


 public class LINQRepository<T> : IRepository<T> where T: class
    {

        protected DbSet DbSet;


        public LINQRepository(DbContext context)
        {
            DbSet = context.Set<T>();

        }

        void IRepository<T>.Add(T entity)
        {
            DbSet.Add(entity);
        }

        void IRepository<T>.Update(T entity)
        {
            DbSet.Attach(entity);
        }

        void IRepository<T>.Delete(T entity)
        {
            DbSet.Remove(entity);
        }

        IQueryable<T> IRepository<T>.GetAll()
        {

            return DbSet as IQueryable<T>;
        }


        T IRepository<T>.Find(int id)
        {

            return DbSet.Find(id) as T;

        }


    }

在我的代码中,我实例化了一个QuestionsRepository,我还想获得返回的问题列表的所有相关答案。 我想知道完成这项工作的好方法是什么? 我是否会在类似GetAllWithChild(String ChildName)的界面中创建另一个函数? 我想有一个更好的方法来解决这个问题。

在getAll方法中,您必须返回DbSet,并在调用该方法时使用Include(扩展方法)。 由于延迟执行的优势,您的查询将被触发一次,您将得到想要的任何东西。

你必须使用这样的东西

new QuestionsRepository().GetAll().Include("Answers").ToList();

要么

new QuestionsRepository().GetAll().Include(x => x.Answers).ToList();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM