1.安装包:
dot*** add package FreeSql
//如果是mysql就安装mysql的(再官网,使用什么数据库安装什么数据库),
dot*** add package FreeSql.Provider.Sqlite
其他的数据库的安装包如下
2.再webapi下添加一个freesqlmanage的文件夹,然后新建立一个freesqlsetup类
public static void freesqlset(this IServiceCollection services,IConfiguration configuration ) {
Func<IServiceProvider, IFreeSql> fsqlFactory = r =>
{
//MySqlConnection这是appsetting中数据库连接的字符串
IFreeSql fsql = new FreeSql.FreeSqlBuilder()
.UseConnectionString(FreeSql.DataType.MySql, configuration.GetConnectionString("MySqlConnection"))
.UseMonitor***mand(cmd => Console.WriteLine($"Sql:{cmd.***mandText}"))//监听SQL语句
.UseAutoSyncStructure(true) //自动同步实体结构到数据库,FreeSql不会扫描程序集,只有CRUD时才会生成表。
.Build();
return fsql;
};
services.AddSingleton<IFreeSql>(fsqlFactory);
}
3.设置appsetting中的连接字符串的connectionstring(以mysql为例)
"ConnectionStrings": {
"MySqlConnection": "server=localhost;userid=root;pwd=123456;port=3306;database=kaoshi;sslmode=none"
},
其他数据库的连接字符串:
不同数据库的不同的连接字符串:ConnectionStrings
DATATYPE | CONNECTIONSTRING |
---|---|
DataType.MySql | Data Source=127.0.0.1;Port=3306;User ID=root;Password=root; Initial Catalog=***cddd;Charset=utf8; SslMode=none;Min pool size=1 |
DataType.PostgreSQL | Host=192.168.164.10;Port=5432;Username=postgres;Password=123456; Database=tedb;ArrayNullabilityMode=Always;Pooling=true;Minimum Pool Size=1 |
DataType.SqlServer | Data Source=.;User Id=sa;Password=123456;Initial Catalog=freesqlTest;Encrypt=True;TrustServerCertificate=True;Pooling=true;Min Pool Size=1 |
DataType.Oracle | user id=user1;password=123456; data source=//127.0.0.1:1521/XE;Pooling=true;Min Pool Size=1 |
DataType.Sqlite | Data Source=|DataDirectory|\document.db; Attachs=xxxtb.db; Pooling=true;Min Pool Size=1 |
DataType.ClickHouse | Data***press=False;BufferSize=32768;SocketTimeout=10000;Check***pressedHash=False;Encrypt=False;***pressor=lz4;Host=192.168.0.121;Port=8125;Database=PersonnelLocation;Username=root;Password=123 |
DataType.Firebird | database=localhost:D:\fbdata\EXAMPLES.fdb;user=sysdba;password=123456 |
DataType.QuestDb | host=localhost;port=8812;username=admin;password=quest;database=qdb;Server***patibilityMode=NoTypeLoading; |
DataType.MsA***ess | Provider=Microsoft.Jet.OleDb.4.0;Data Source=d:/a***db/2003.mdb |
DataType.MsA***ess(a***db) | Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:/a***db/2003.a***db; |
DataType.MsA***ess(加密) | Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:/a***db/2003.a***db;Jet OLEDB:Database Password=12341234 |
DataType.Dameng(达梦) | server=127.0.0.1;port=5236;user=2user;password=123456789;database=2user;poolsize=5 |
DataType.ShenTong(神通) | HOST=192.168.164.10;PORT=2003;DATABASE=OSRDB;USERNAME=SYSDBA;PASSWORD=szoscar55;MAXPOOLSIZE=2 |
DataType.KingbaseES(人大金仓) V008R003 | Server=127.0.0.1;Port=54321;UID=USER2;PWD=123456789;database=TEST;MAXPOOLSIZE=2 |
DataType.Gbase(南大通用) | Driver={GBase ODBC DRIVER (64-Bit)};Host=192.168.164.134;Service=9088;Server=gbase01;Database=testdb;Protocol=onsoctcp;Uid=gbasedbt;Pwd=GBase123;Db_locale=zh_***.utf8;Client_locale=zh_***.utf8 |
DataType.Xugu(虚谷) | IP=127.0.0.1;DB=SYSTEM;User=SYSDBA;PWD=SYSDBA;Port=5138;AUTO_***MIT=on;CHAR_SET=UTF8 |
DataType.OdbcMySql | Driver={MySQL ODBC 8.0 Unicode Driver}; Server=127.0.0.1;Persist Security Info=False; Trusted_Connection=Yes;UID=root;PWD=root; DATABASE=***cddd_odbc;Charset=utf8; SslMode=none;Min Pool Size=1 |
DataType.OdbcSqlServer | Driver={SQL Server};Data Source=.;User Id=sa;Password=123456;Initial Catalog=freesqlTest;Encrypt=True;TrustServerCertificate=True;Pooling=true;Min Pool Size=1 |
DataType.OdbcOracle | Driver={Oracle in XE};Server=//127.0.0.1:1521/XE; Persist Security Info=False; Trusted_Connection=Yes;UID=odbc1;PWD=123456; Min Pool Size=1 |
DataType.OdbcPostgreSQL | Driver={PostgreSQL Unicode(x64)};Server=192.168.164.10; Port=5432;UID=postgres;PWD=123456; Database=tedb_odbc;Pooling=true;Min Pool Size=1 |
DataType.OdbcDameng (达梦) | Driver={DM8 ODBC DRIVER};Server=127.0.0.1:5236; Persist Security Info=False; Trusted_Connection=Yes; UID=USER1;PWD=123456789 |
DataType.OdbcKingbaseES (人大金仓) V008R003 | Driver={KingbaseES 8.2 ODBC Driver ANSI};Server=127.0.0.1;Port=54321;UID=USER2;PWD=123456789;database=TEST |
DataType.Odbc | Driver={SQL Server};Server=.;Persist Security Info=False; Trusted_Connection=Yes;Integrated Security=True; DATABASE=freesqlTest_odbc; Pooling=true;Min pool size=1 |
DataType.Customopen in new window | 自定义连接串,访问任何数据库 |
4.再program中注册服务:
//freesqlset是创建的freesql的帮助类的方法名称
builder.Services.freesqlset(builder.Configuration);//注册freesql的相关服务
5.安装包:dot*** tool install -g FreeSql.Generator
6.再项目中创建models文件夹,然后再地址栏中数据cmd进入数据命令FreeSql.Generator --help执行(如果执行不成功就打开终端管理员然后进行操作)如果执行成功如下:
/ / __ _ _ / / _ _ / / / / / __// -)/ -) _\ \ / _ `/ / / // // _/ _/ /___/ _, / // /_/
FreeSql.Generator -Razor 1 -NameOptions 0,0,0,0 -NameSpace MyProject -DB "MySql,Data Source=127.0.0.1;..."
-Razor 1 * 选择模板:实体类+特性 -Razor 2 * 选择模板:实体类+特性+导航属性 -Razor "d:\diy.cshtml" * 自定义模板文件 -NameOptions * 4个布尔值对应: 首字母大写 首字母大写,其他小写 全部小写 下划线转驼峰 -NameSpace * 命名空间 -DB "MySql,data source=127.0.0.1;port=3306;user id=root;password=root;initial catalog=数据库;charset=utf8;sslmode=none;max pool size=2" -DB "SqlServer,data source=.;integrated security=True;initial catalog=数据库;pooling=true;max pool size=2" -DB "PostgreSQL,host=192.168.164.10;port=5432;username=postgres;password=123456;database=数据库;pooling=true;maximum pool size=2" -DB "Oracle,user id=user1;password=123456;data source=//127.0.0.1:1521/XE;pooling=true;max pool size=2" -DB "Sqlite,data source=document.db" -DB "Firebird,database=localhost:D:\fbdata\EXAMPLES.fdb;user=sysdba;password=123456;max pool size=2" -DB "Dameng,server=127.0.0.1;port=5236;user id=2user;password=123456789;database=2user;poolsize=2" -DB "KingbaseES,server=127.0.0.1;port=54321;uid=USER2;pwd=123456789;database=数据库" -DB "ShenTong,host=192.168.164.10;port=2003;database=数据库;username=SYSDBA;password=szoscar55;maxpoolsize=2" * Dameng(达梦数据库)、KingbaseES(人大金仓数据库)、ShenTong(神舟通用数据库) -Filter Table+View+StoreProcedure 默认生成:表+视图+存储过程 如果不想生成视图和存储过程 -Filter View+StoreProcedure -Match 表名或正则表达式,只生成匹配的表,如:dbo\.TB_.+ -FileName 文件名,默认:{name}.cs -Output 保存路径,默认为当前 shell 所在目录 推荐在实体类目录创建 gen.bat,双击它重新所有实体类
7.然后执行FreeSql.Generator -Razor 1 -NameOptions 0,0,0,1 -NameSpace LinCms.Core.Entities -DB "MySql,Data Source=127.0.0.1;Port=3306;User ID=root;Password=123456;Initial Catalog=lincms;Charset=utf8;SslMode=none;Max pool size=2"这是以mysql为例,在这里需要改NameSpace 命名空间,需要再models文件夹下创建一个类,然后赋值命名空间到这里,至此,实体类就会引入成功
如果不是mysql的数据库,其他的数据库的DB的参数是这些
-DB 参数
-DB "MySql,data source=127.0.0.1;port=3306;user id=root;password=root;initial catalog=数据库;charset=utf8;sslmode=none;max pool size=2"
-DB "SqlServer,data source=.;integrated security=True;initial catalog=数据库;pooling=true;max pool size=2"
-DB "PostgreSQL,host=192.168.164.10;port=5432;username=postgres;password=123456;database=数据库;pooling=true;maximum pool size=2"
-DB "Oracle,user id=user1;password=123456;data source=//127.0.0.1:1521/XE;pooling=true;max pool size=2"
-DB "Sqlite,data source=document.db"
-DB "Firebird,database=localhost:D:\fbdata\EXAMPLES.fdb;user=sysdba;password=123456;max pool size=2"
-DB "Dameng,server=127.0.0.1;port=5236;user id=2user;password=123456789;database=2user;poolsize=2"
-DB "KingbaseES,server=127.0.0.1;port=54321;uid=USER2;pwd=123456789;database=数据库"
-DB "ShenTong,host=192.168.164.10;port=2003;database=数据库;username=SYSDBA;password=szoscar55;maxpoolsize=2"
8.创建控制器,然后依赖注入
public readonly IFreeSql freeSql;
public ValuesController(IFreeSql free) {
freeSql=free;
}
7.然后进行增删改查(官网可查看多种方式)