1、安装Nuget包 AutoMapper
2、program.cs里添加如下配置:
services.AddSingleton(r =>
{
var str = configuration.GetConnectionString("MES");
return new FreeSqlBuilder()
.UseConnectionString(DataType.SqlServer, str)
.Build<MESFlag>();
});
services.AddSingleton(r =>
{
var str = configuration.GetConnectionString("Kingdee");
return new FreeSqlBuilder()
.UseConnectionString(DataType.SqlServer, str)
.Build<KingdeeFlag>();
});
3、 创建仓储类 ServiceLocator
public class ServiceLocator
{
#region Field
private static IServiceProvider _instance;
#endregion
#region Public Method
/// <summary>
/// 设置IServiceProvider
/// </summary>
/// <param name="serviceProvider"></param>
public static void SetProvider(IServiceProvider serviceProvider)
{
if (_instance == null)
_instance = serviceProvider;
}
/// <summary>
/// 获取服务
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static T GetService<T>()
{
return _instance.GetService<T>();
}
/// <summary>
/// 获取服务
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public static object GetService(Type type)
{
return _instance.GetService(type);
}
#endregion
}
4、program.cs里添加如下配置:
ServiceLocator.SetProvider(services.BuildServiceProvider());
5、创建ServiceBase类
public abstract class ServiceBase<T> where T : EntityBase, new()
{
/// <summary>
/// 数据库访问对象1
/// </summary>
protected IFreeSql<DB1Flag> FreeSql1
{
get
{
return ServiceLocator.GetService<IFreeSql<DB1Flag>>();
}
}
/// <summary>
/// 数据库访问对象2
/// </summary>
protected IFreeSql<Db2Flag> FreeSql2
{
get
{
return ServiceLocator.GetService<IFreeSql<Db2Flag>>();
}
}
}
/// <summary>
/// 库1
/// </summary>
public class DB1Flag
{ }
/// <summary>
/// 库2
/// </summary>
public class Db2Flag
{ }
6、创建你自己的Service
public class YourService : ServiceBase<YourEntity>, IYourService
{
private readonly ILogger<YourService> _logger;
public YourService(ILogger<YourService> logger)
{
_logger = logger;
}
public List<YourDto> GetList(string name)
{
var list = FreeSql1.Select<YourEntity>().Where(x => x.Name == name).ToList();
// 访问
var list2 = FreeSql2.Select<YourEntity>().Where(x=>x.Name == name).ToList();
// convert to dto...
return null;
}
}
7、创建Base实体类
public abstract class EntityBase:EntityBase<long>
{
}
/// <summary>
///
/// </summary>
/// <typeparam name="T"></typeparam>
public abstract class EntityBase <T>
{
/// <summary>
/// 主键
/// </summary>
[Column(IsPrimary = true)]
[Description("主键")]
public virtual T Id { get; set; }
}
8、创建你的实体类
[Table(Name = "Tb_Your")]
public class YourEntity : EntityBase
{
/// <summary>
/// 姓名
/// </summary>
[Column]
public string Name { get; set; }
/// <summary>
/// 备注
/// </summary>
[Column(DbType = "text")]
public string Remark { get; set; }
#region 关联对象
/// <summary>
/// 子表集合
/// </summary>
[Navigate(nameof(YourDetailEntity.ParentId))]
public List<YourDetailEntity> DetailList { get; set; }
#endregion
}