an ORM like "EnterpriseLib Data Block" for dotnet
- 前往 nuget.org 手工下载
- 或 通过 Visual Studio 包管理器控制台安装
Install-Package Lotech.Data.Core
配置包含驱动、连接串及默认设置内容,提供给 DatabaseFactory.Create() 、DatabaseFactory.Create(string connectionName) 使用
<database>
<dbProviderFactories>
<!--NET CORE 中注册 SqlServer 驱动, name 被连接串的 providerName 引用-->
<add name="System.Data.SqlClient" type="System.Data.SqlClient.SqlClientFactory, System.Data.SqlClient"/>
</dbProviderFactories>
<connectionStrings>
<add name="connection" providerName="System.Data.SqlClient"
connectionString="Data Source=.; User Id=sa; Password=123456; Initial Catalog = example" />
</connectionStrings>
<!-- DatabaseFactory.Create() 时将使用以下配置的默认连接串名称-->
<databaseSettings defaultDatabase="connection" />
</database>- 通过
DatabaseFactory创建实例
var db = new DatabaseFactory.Create(); // 使用默认连接创建 var db = new DatabaseFactory.Create("connection"); // 使用指定的连接名创建- 直接创建对应实例
var db = new SqlServerDatabase(System.Data.SqlClient.SqlClientFactory.Instance) {
ConnectionString = "Data Source=.; User Id=sa; Password=123456; Initial Catalog = example;
};var db = DatabaseFactory.Create();
db.Log = message => Console.WriteLine(log); // 将SQL执行日志输出到控制台- 获取给定类型的
DbCommand对象
public DbCommand GetCommand(CommandType commandType, string commandText);示例:
var sqlCommand = db.GetCommand(CommandType.Text, "SELECT * FROM example");
var procedureCommand = db.GetCommand(CommandType.Procedure, "MyProc");- 获取
Text类型的DbCommand对象
public DbCommand GetSqlStringCommand(string commandText);示例:
var sqlCommand = db.GetSqlStringCommand( "SELECT * FROM example");using Lotech.Data;
class MyDAO {
IDatabase db = DatabaseFactory.Create(); // use default database
public MyEntity[] GetMyEntities(string userId, DateTime createDate) {
// exec MyProc @userId, @date
// db.ProcedureQuery is extension method, using Lotech.Data is required.
return db.ProcedureQuery("MyProc", new {userId, date = createDate}).ExecuteEntities<MyEntity>();
}
}