1

可以请建议在 MVC 应用程序中执行 CRUD 操作的最佳/有效方式。我在我的项目中使用实体框架进行数据库访问。

例如:EDMX:SupportContext;

  1. 在这里,我使用 SupportContext [.edmx} 执行了 CRUD 操作。它比存储库处理得更快。而且我还可以在 LinQ 查询中从多个上下文对象 [表] 中检索数据。

前任:

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. 我使用通用存储库模式代替 EDMx 直接访问。它充当我的代码逻辑和 EDMX 文件之间的层。找到通用示例。

代码:

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();

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

4

0 回答 0