C# 开发辅助类库,和士官长一样身经百战且越战越勇的战争机器,能力无人能出其右。
GitHub:MasterChief 欢迎Star,欢迎Issues;
项目架构思维导图:
目录
1. 数据库访问
a. 支持Dapper和Entity Framework 两种ORM框架;
b. 通过IOC可以很少代码在Dapper和Entity Framework切换;
c. 实现Repository和UnitOfWork;
d. CURD以及事务实现简单,很大程度关注业务实现即可;
代码使用说明:
- Create 添加
public bool Create(EFSample samle)
{
using (IDbContext dbcontext = _contextFactory.Create())
{
return dbcontext.Create<EFSample>(samle);
}
}
- Delete 删除
public bool Delete(EFSample sample)
{
using (IDbContext dbcontext = _contextFactory.Create())
{
return dbcontext.Delete(sample);
}
}
- Update 修改
public bool Update(EFSample sample)
{
using (IDbContext dbcontext = _contextFactory.Create())
{
return dbcontext.Update(sample);
}
}
- GetByKeyID 根据主键查询
public EFSample GetByKeyID(Guid id)
{
using (IDbContext dbcontext = _contextFactory.Create())
{
return dbcontext.GetByKeyID<EFSample>(id);
}
}
- GetList 条件查询集合
public List<EFSample> GetList(Expression<Func<EFSample, bool>> predicate = null)
{
using (IDbContext dbcontext = _contextFactory.Create())
{
return dbcontext.GetList<EFSample>(predicate);
}
}
- Exist 条件查询是否存在
public bool Exist(Expression<Func<EFSample, bool>> predicate = null)
{
using (IDbContext dbcontext = _contextFactory.Create())
{
return dbcontext.Exist<EFSample>(predicate);
}
}
- SqlQuery 执行Sql脚本
public List<EFSample> SqlQuery(string sql, DbParameter[] parameter)
{
using (IDbContext dbcontext = _contextFactory.Create())
{
return dbcontext.SqlQuery<EFSample>(sql, parameter)?.ToList();
}
}
- CreateWithTransaction 事务处理
public bool CreateWithTransaction(EFSample sample, EFSample sample2)
{
bool result = true;
using (IDbContext dbcontext = _contextFactory.Create())
{
try
{
dbcontext.BeginTransaction();//开启事务
dbcontext.Create(sample);
dbcontext.Create(sample2);
dbcontext.Commit();
}
catch (Exception)
{
dbcontext.Rollback();
result = false;
}
}
return result;
}
- GetFirstOrDefault 条件查询第一项或默认数据
public EFSample GetFirstOrDefault(Expression<Func<EFSample, bool>> predicate = null)
{
using (IDbContext dbcontext = _contextFactory.Create())
{
return dbcontext.GetFirstOrDefault<EFSample>(predicate);
}
}
- 单元测试以及Sql Server脚本
using MasterChief.DotNet.Core.DapperTests;
using MasterChief.DotNet.Core.DapperTests.Model;
using MasterChief.DotNet.Core.DapperTests.Service;
using MasterChief.DotNet4.Utilities.Common;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Ninject;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Data.SqlClient;
using System.Threading.Tasks;
namespace MasterChief.DotNet.Core.Dapper.Tests
{
[TestClass()]
public class SampleServiceTests
{
private IKernel _kernel = null;
private ISampleService _sampleService = null;
private readonly Guid _testID = "2F6D3C43-C2C7-4398-AD2B-ED5E82D78888".ToGuidOrDefault(Guid.Empty);
private readonly string _testName = "DapperSample";
[TestInitialize]
public void SetUp()
{
_kernel = new StandardKernel(new ServiceModule());
Assert.IsNotNull(_kernel);
_sampleService = _kernel.Get<ISampleService