asp.net-core - ASP.NET Core:如何使用 ADO.NET(无实体框架)的工作单元创建通用存储库模式
问题描述
我正在使用带有实体框架的设计模式(通用存储库)的 ASP.NET Core。
问题是实体框架没有sql_dependency
,我真的很想sql_dependency
在我的项目中使用。此外,我正在使用带有通用存储库的设计模式。
我需要一种将 Ado.net 与具有工作单元的通用存储库模式一起使用的方法
我的代码:
仓库界面:
public interface IGRepository<T> where T : class
{
IQueryable<T> GetAll();
Task<T> GetByIdAsync(Object id);
void Insert(T entity);
void Update(T entity);
void Delete(Object id);
}
工作单元界面:
public interface IUnitOfWork<T> where T : class
{
IGRepository<T> Entity { get; }
Task SaveAsync();
}
通用存储库:
public class GRepository<T> : IGRepository<T> where T : class
{
private readonly DataContext _context;
private DbSet<T> table = null;
public GRepository(DataContext context)
{
_context = context;
table = _context.Set<T>();
}
public async Task<T> GetByIdAsync(Object id)
{
return await table.FindAsync(id);
}
public void Delete(Object id)
{
T existing = table.Find(id);
table.Remove(existing);
}
public IQueryable<T> GetAll()
{
return table.AsQueryable().AsNoTracking();
}
public void Insert(T entity)
{
table.Add(entity);
}
public void Update(T entity)
{
table.Attach(entity);
_context.Entry(entity).State = EntityState.Modified;
}
//public IQueryable<T> Find(Expression<Func<T, bool>> predicate)
//{
// return table.AsNoTracking().Where(predicate);
//}
//public IQueryable<T> Include(params Expression<Func<T, object>>[] includes)
//{
// IQueryable<T> query = table;
// foreach (Expression<Func<T, object>> include in includes)
// query = query.Include(include);
// return query; // عندما تكون IQueryable لا تقبل query.ToList(); لأنها لأن نتيجتها هي ليست
//}
//public List<T> Get(Expression<Func<T, bool>> filter = null,
// Func<IQueryable<T>,
// IOrderedQueryable<T>> orderBy = null,
// params Expression<Func<T,
// object>>[] includes)
//{
// IQueryable<T> query = table;
// foreach (Expression<Func<T, object>> include in includes)
// query = query.Include(include);
// if (filter != null)
// query = query.Where(filter);
// if (orderBy != null)
// query = orderBy(query);
// return query.ToList();
//}
}
请帮助将其更改为 ADO.NET(无实体框架)
解决方案
推荐阅读
- python-3.x - 基于 CSV 文件的数组的“int”和“builtin_function_or_method”实例之间不支持“<=”
- node.js - 静态文件与流式 node.js
- python-3.x - 将最长的单词片段保留在 Python 列表中并丢弃其他单词片段
- python - 在 python 代码中使用“导出”命令时出错
- ios - 跨设备同步 Realm 数据
- android - Unity Google Play 游戏服务插件在 Debug 中的使用
- reactjs - 如何在ajax请求/this.setStates的for循环之后调用函数?
- flutter - 如何返回未来
在颤振? - javascript - 如何在 Python 中使用 Selenium 绕过人工验证“按住”?
- assembly - x86 MASM 程序集中的寻址模式和内存源与目标