.net framework ef封装类,增删改查,批量新增,批量删除,批量修改,支持内连接,要求是范型,通用的父类,请给出源码
时间: 2024-10-24 09:05:04 浏览: 25
EF,MVC使用泛型仓储模式和工作单元实现增删查改
3星 · 编辑精心推荐
.NET Framework 中的 Entity Framework (EF) 提供了一套强大的ORM(Object-Relational Mapping)工具,用于操作数据库。它通过泛型类和抽象基类实现了数据访问的CRUD(创建(Create)、读(Retrieve)、更新(Update)和删除(Delete))操作以及更高级的功能,如批量操作。
然而,由于GitHub上完整的源代码不是公开的一部分,通常我们在实际项目中会看到这样的结构:
```csharp
// 假设有一个抽象基类 DbContextBase,包含泛型类型<T>和基本的操作方法
public abstract class DbContextBase<T> : DbContext where T : class
{
protected DbContextBase(DbContextOptions<T> options)
: base(options)
{
}
public virtual DbSet<T> Entities { get; set; }
// CRUD操作
public virtual T Create(T entity)
{
return Entities.Add(entity).Entity;
}
public virtual void Update(T entity)
{
Entities.Attach(entity);
Entities.UpdateRange(new[] { entity });
}
public virtual int Delete(T entity)
{
return Entities.Remove(entity);
}
// 批量操作
public virtual int BulkCreate(IEnumerable<T> entities)
{
return Entities.AddRange(entities);
}
public virtual int BulkDelete(IEnumerable<T> entities)
{
var ids = entities.Select(e => e.Id);
return Entities.Where(e => ids.Contains(e.Id)).RemoveRange();
}
// 支持内连接
public virtual IQueryable<TResult> JoinInner<TLeft, TRight, TKey, TResult>(
Expression<Func<TLeft, TKey>> leftKeySelector,
Expression<Func<TRight, TKey>> rightKeySelector,
Expression<Func<TLeft, TRight, TResult>> resultSelector)
{
return this.Set<TLeft>()
.Join(this.Set<TRight>(), leftKeySelector, rightKeySelector, resultSelector);
}
// 更多其他辅助方法...
}
// 要使用特定的数据上下文,只需要继承DbContextBase并提供具体的DbContextOptions实例
public class MyDbContext : DbContextBase<MyEntity>
{
public MyDbContext(DbContextOptions<MyDbContext> options)
: base(options)
{
}
}
```
请注意,这只是一个简化示例,实际使用时可能需要处理更多细节,如事务管理、异步操作等。如果你想要获取完整源代码,建议查阅官方文档或者下载最新版本的EF库查看其内部实现。
阅读全文