单个查询以从多个存储库中检索记录

时间:2013-07-30 06:56:37

标签: c# asp.net-mvc linq

请建议在MVC应用程序中执行CRUD操作的最佳/高效方法。 我在我的项目中使用Entity Framework进行数据库访问。

ex:EDMX:SupportContext;

  1. 这里我使用SupportContext [.edmx}执行了CRUD操作。处理速度比存储库快。我还可以在LinQ查询中从多个上下文对象[table]中检索数据。
  2. 前:

    using (SupportContext support =new SupportContext())
    {
    var=(from t1 in support.table1
         from t2 in support.table 2
         where t1.id==t2.id
         select t1).ToList();
    }
    
    1. 我使用了Generic Repository Pattern而不是使用EDMx直接访问。它在我的代码逻辑和EDMX文件之间起作用。找到通用的例子。
    2. 代码:

      public interface IRepository<T> : IDisposable where T : class
      {
          IEnumerable<T> Find(Expression<Func<T, bool>> predicate);      
          void Add(T entity);              
          void SaveChanges();
      }
      
      public class GenericRepository<T> : IRepository<T> where T : class
      {
          private ObjectContext _context;
          private IObjectSet<T> _objectSet;
          public GenericRepository(ObjectContext context)
          {
              _context = context;
              _objectSet = _context.CreateObjectSet<T>();
          }
      
          public IEnumerable<T> Find(Expression<Func<T, bool>> predicate)
          {
              return _objectSet.Where<T>(predicate);
          }                 
      
          public void Add(T entity)
          {
              if (entity == null)
              {
                  throw new ArgumentNullException("entity");
              }
              _objectSet.AddObject(entity);
          }        
      
          public void SaveChanges()
          {
              _context.SaveChanges();
          }             
      }
      

      这里我将此存储库用于CRUD操作:

      var dat1=new GenericRepository<Table1>(new SupportContext());
      var dat2=new GenericRepository<Table2>(new SupportContext());
      

      这里我想检索dat1,dat2存储库中的记录,而Id文件是相同的。但我无法以组合方式检索。但是以单一方式做到。

      var=dat1.Find(t=>t.id==3).toList();
      

      您能否建议如何从组合存储库中检索数据?还建议哪种方法是访问数据的最佳方式?

0 个答案:

没有答案