mirror of
https://github.com/dotnetcore/FreeSql.git
synced 2026-02-04 23:40:53 +08:00
update
@@ -2,9 +2,7 @@
|
|||||||
|
|
||||||
```csharp
|
```csharp
|
||||||
static IFreeSql fsql = new FreeSql.FreeSqlBuilder()
|
static IFreeSql fsql = new FreeSql.FreeSqlBuilder()
|
||||||
.UseConnectionString(FreeSql.DataType.MySql,
|
.UseConnectionString(FreeSql.DataType.MySql, connectionString)
|
||||||
"Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd;Charset=utf8;SslMode=none;Max pool size=10"
|
|
||||||
)
|
|
||||||
.Build(); //请务必定义成 Singleton 单例模式
|
.Build(); //请务必定义成 Singleton 单例模式
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -41,22 +41,10 @@ Install-Package FreeSql.Provider.Sqlite
|
|||||||
|
|
||||||
## Declaring
|
## Declaring
|
||||||
|
|
||||||
```csharp
|
|
||||||
IFreeSql fsql = new FreeSql.FreeSqlBuilder()
|
|
||||||
.UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=db1.db")
|
|
||||||
//Automatically synchronize the entity structure to the database.
|
|
||||||
//FreeSql will not scan the assembly, and will generate a table if and only when the CRUD instruction is executed.
|
|
||||||
.UseAutoSyncStructure(true)
|
|
||||||
//Be sure to define as singleton mode
|
|
||||||
.Build();
|
|
||||||
|
|
||||||
//Note: IFreeSql should be declared as a singleton in the project, not created every time it is used.
|
|
||||||
```
|
|
||||||
|
|
||||||
- .NET Core Singleton
|
- .NET Core Singleton
|
||||||
Startup.cs
|
Startup.cs
|
||||||
```csharp
|
```csharp
|
||||||
public void ConfigureServices(IServiceCollection services)
|
services.AddSingleton<IFreeSql>(r =>
|
||||||
{
|
{
|
||||||
IFreeSql fsql = new FreeSql.FreeSqlBuilder()
|
IFreeSql fsql = new FreeSql.FreeSqlBuilder()
|
||||||
.UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=db1.db")
|
.UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=db1.db")
|
||||||
@@ -64,21 +52,21 @@ public void ConfigureServices(IServiceCollection services)
|
|||||||
//FreeSql will not scan the assembly, and will generate a table if and only when the CRUD instruction is executed.
|
//FreeSql will not scan the assembly, and will generate a table if and only when the CRUD instruction is executed.
|
||||||
.UseAutoSyncStructure(true)
|
.UseAutoSyncStructure(true)
|
||||||
.Build();
|
.Build();
|
||||||
services.AddSingleton<IFreeSql>(fsql);
|
return fsql;
|
||||||
}
|
});
|
||||||
```
|
```
|
||||||
- [.NET Core injects multiple FreeSql instances](https://github.com/dotnetcore/FreeSql/issues/44)
|
- [.NET Core injects multiple FreeSql instances](https://github.com/dotnetcore/FreeSql/issues/44)
|
||||||
- .NET Framework Singleton
|
- .NET Framework Singleton
|
||||||
```csharp
|
```csharp
|
||||||
public class DB
|
public class DB
|
||||||
{
|
{
|
||||||
static Lazy<IFreeSql>sqliteLazy = new Lazy<IFreeSql>(() => new FreeSql.FreeSqlBuilder()
|
static Lazy<IFreeSql> sqliteLazy = new Lazy<IFreeSql>(() => {
|
||||||
|
var fsql = new FreeSql.FreeSqlBuilder()
|
||||||
.UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=db1.db")
|
.UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=db1.db")
|
||||||
//Automatically synchronize the entity structure to the database.
|
|
||||||
//FreeSql will not scan the assembly, and will generate a table if and only when the CRUD instruction is executed.
|
|
||||||
.UseAutoSyncStructure(true)
|
.UseAutoSyncStructure(true)
|
||||||
.Build());
|
.Build();
|
||||||
|
return fsql;
|
||||||
|
});
|
||||||
public static IFreeSql Sqlite => sqliteLazy.Value;
|
public static IFreeSql Sqlite => sqliteLazy.Value;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|||||||
41
入门.md
41
入门.md
@@ -38,59 +38,38 @@ or
|
|||||||
Install-Package FreeSql
|
Install-Package FreeSql
|
||||||
Install-Package FreeSql.Provider.Sqlite
|
Install-Package FreeSql.Provider.Sqlite
|
||||||
```
|
```
|
||||||
## 声明
|
|
||||||
```csharp
|
|
||||||
IFreeSql fsql = new FreeSql.FreeSqlBuilder()
|
|
||||||
.UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=db1.db")
|
|
||||||
.UseAutoSyncStructure(true) //自动同步实体结构到数据库,FreeSql不会扫描程序集,只有CRUD时才会生成表。
|
|
||||||
.Build(); //请务必定义成 Singleton 单例模式
|
|
||||||
|
|
||||||
//注意: IFreeSql 在项目中应以单例声明,而不是在每次使用的时候创建。
|
## 声明
|
||||||
```
|
|
||||||
|
|
||||||
- .NET Core 单例
|
- .NET Core 单例
|
||||||
Startup.cs
|
Startup.cs
|
||||||
```csharp
|
```csharp
|
||||||
public void ConfigureServices(IServiceCollection services)
|
services.AddSingleton<IFreeSql>(r =>
|
||||||
{
|
{
|
||||||
Func<IServiceProvider, IFreeSql> implementationFreeSql = r =>
|
|
||||||
{
|
|
||||||
IFreeSql fsql = new FreeSql.FreeSqlBuilder()
|
IFreeSql fsql = new FreeSql.FreeSqlBuilder()
|
||||||
.UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=db1.db")
|
.UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=db1.db")
|
||||||
.UseAutoSyncStructure(true) //自动同步实体结构到数据库,FreeSql不会扫描程序集,只有CRUD时才会生成表。
|
.UseAutoSyncStructure(true) //自动同步实体结构到数据库,FreeSql不会扫描程序集,只有CRUD时才会生成表。
|
||||||
.Build();
|
.Build();
|
||||||
return fsql;
|
return fsql;
|
||||||
};
|
});
|
||||||
services.AddSingleton<IFreeSql>(implementationFreeSql);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
|
|
||||||
{
|
|
||||||
//在项目启动时,从容器中获取IFreeSql实例,并执行一些操作:同步表,种子数据,FluentAPI等
|
|
||||||
using(IServiceScope serviceScope = app.ApplicationServices.CreateScope())
|
|
||||||
{
|
|
||||||
var fsql = serviceScope.ServiceProvider.GetRequiredService<IFreeSql>();
|
|
||||||
fsql.CodeFirst.SyncStructure(typeof(Topic));//Topic 为要同步的实体类
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
```
|
||||||
- [.NET Core注入多个FreeSql实例](https://freesql.net/extra/idlebus-freesql.html)
|
- [.NET Core注入多个FreeSql实例](https://freesql.net/extra/idlebus-freesql.html)
|
||||||
- .NET Framework 单例
|
- .NET Framework 单例
|
||||||
```csharp
|
```csharp
|
||||||
public class DB
|
public class DB
|
||||||
{
|
{
|
||||||
static Lazy<IFreeSql>sqliteLazy = new Lazy<IFreeSql>(() => new FreeSql.FreeSqlBuilder()
|
static Lazy<IFreeSql> sqliteLazy = new Lazy<IFreeSql>(() => {
|
||||||
|
var fsql = new FreeSql.FreeSqlBuilder()
|
||||||
.UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=db1.db")
|
.UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=db1.db")
|
||||||
.UseAutoSyncStructure(true) //自动同步实体结构到数据库,FreeSql不会扫描程序集,只有CRUD时才会生成表。
|
.UseAutoSyncStructure(true)
|
||||||
.Build());
|
.Build();
|
||||||
|
return fsql;
|
||||||
|
});
|
||||||
public static IFreeSql Sqlite => sqliteLazy.Value;
|
public static IFreeSql Sqlite => sqliteLazy.Value;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
> 注意:`class DB\<T\>` 泛型类不适合定义 static 单例
|
> 注意:class DB\<T\> 泛型类不适合定义 static 单例
|
||||||
|
|
||||||
然后使用时,直接通过 `IFreeSql fsql= DB.Sqlite;` 使用 fsql 了。
|
|
||||||
|
|
||||||
IFreeSql 是 ORM 最顶级对象,所有操作都是使用它的方法或者属性:
|
IFreeSql 是 ORM 最顶级对象,所有操作都是使用它的方法或者属性:
|
||||||
|
|
||||||
|
|||||||
18
常见问题.md
18
常见问题.md
@@ -23,7 +23,8 @@ fsql.Aop.CurdAfter += (s, e) =>
|
|||||||
|
|
||||||
默认情况 c# 枚举会映射为 MySql Enum 类型,如果想映射为 int 在 FreeSqlBuilder Build 之后执行以下 Aop 统一处理:
|
默认情况 c# 枚举会映射为 MySql Enum 类型,如果想映射为 int 在 FreeSqlBuilder Build 之后执行以下 Aop 统一处理:
|
||||||
```csharp
|
```csharp
|
||||||
fsql.Aop.ConfigEntityProperty += (s, e) => {
|
fsql.Aop.ConfigEntityProperty += (s, e) =>
|
||||||
|
{
|
||||||
if (e.Property.PropertyType.IsEnum)
|
if (e.Property.PropertyType.IsEnum)
|
||||||
e.ModifyResult.MapType = typeof(int);
|
e.ModifyResult.MapType = typeof(int);
|
||||||
};
|
};
|
||||||
@@ -69,11 +70,11 @@ fsql.Select<T>().WithMemory(list).ToList();
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### 8、多平台代码参考,使用自定义SqliteProvider,例如Sqlite用Microsoft.Data.Sqlite或者反射Mono.Data.Sqlite.
|
### 8、多平台代码参考,使用自定义 SqliteProvider,例如 Sqlite 用 Microsoft.Data.Sqlite 或者反射 Mono.Data.Sqlite.
|
||||||
|
|
||||||
[arm/树莓派](https://github.com/densen2014/FreeSqlDemos/tree/master/ARM_ConsoleApp)
|
[arm/树莓派](https://github.com/densen2014/FreeSqlDemos/tree/master/ARM_ConsoleApp)
|
||||||
|
|
||||||
**有条件的同学直接试试 FreeSql.Provider.SqliteCore 包,使用的就是Microsoft.Data.Sqlite驱动.**
|
**有条件的同学直接试试 FreeSql.Provider.SqliteCore 包,使用的就是 Microsoft.Data.Sqlite 驱动.**
|
||||||
|
|
||||||
1.添加包
|
1.添加包
|
||||||
|
|
||||||
@@ -85,8 +86,7 @@ fsql.Select<T>().WithMemory(list).ToList();
|
|||||||
2.代码
|
2.代码
|
||||||
|
|
||||||
```csharp
|
```csharp
|
||||||
Microsoft.Data.Sqlite.SqliteConnection _database = new Microsoft.Data.Sqlite.SqliteConnection($"Data Source=document.db");
|
var _database = new Microsoft.Data.Sqlite.SqliteConnection($"Data Source=document.db");
|
||||||
|
|
||||||
var fsql = new FreeSql.FreeSqlBuilder()
|
var fsql = new FreeSql.FreeSqlBuilder()
|
||||||
.UseConnectionFactory(FreeSql.DataType.Sqlite, () => _database, typeof(FreeSql.Sqlite.SqliteProvider<>))
|
.UseConnectionFactory(FreeSql.DataType.Sqlite, () => _database, typeof(FreeSql.Sqlite.SqliteProvider<>))
|
||||||
.UseAutoSyncStructure(true)
|
.UseAutoSyncStructure(true)
|
||||||
@@ -100,15 +100,15 @@ var fsql = new FreeSql.FreeSqlBuilder()
|
|||||||
```csharp
|
```csharp
|
||||||
using System.Data.SQLite;
|
using System.Data.SQLite;
|
||||||
|
|
||||||
string dbpath = Path.Combine(ApplicationData.Current.LocalFolder.Path, "sqliteSample.db");
|
var dbpath = Path.Combine(ApplicationData.Current.LocalFolder.Path, "sqliteSample.db");
|
||||||
SQLiteConnection _database = new SQLiteConnection($"Data Source={dbpath}");
|
var _database = new SQLiteConnection($"Data Source={dbpath}");
|
||||||
var fsql = new FreeSql.FreeSqlBuilder()
|
var fsql = new FreeSql.FreeSqlBuilder()
|
||||||
.UseConnectionFactory(FreeSql.DataType.Sqlite, () => _database, typeof(FreeSql.Sqlite.SqliteProvider<>))
|
.UseConnectionFactory(FreeSql.DataType.Sqlite, () => _database, typeof(FreeSql.Sqlite.SqliteProvider<>))
|
||||||
.Build();
|
.Build();
|
||||||
```
|
```
|
||||||
|
|
||||||
[Xamarin Forms,代码较多](https://github.com/densen2014/FreeSqlDemos/tree/master/xamarinFormApps)
|
[Xamarin Forms,代码较多](https://github.com/densen2014/FreeSqlDemos/tree/master/xamarinFormApps)
|
||||||
主程序,接口获取rovider,各个平台自己实现.
|
主程序,接口获取rovider,各个平台自己实现.
|
||||||
|
|
||||||
```csharp
|
```csharp
|
||||||
if (Device.RuntimePlatform == Device.iOS || Device.RuntimePlatform == Device.Android)
|
if (Device.RuntimePlatform == Device.iOS || Device.RuntimePlatform == Device.Android)
|
||||||
{
|
{
|
||||||
@@ -125,7 +125,7 @@ if (Device.RuntimePlatform == Device.iOS || Device.RuntimePlatform == Device.And
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### 9、 2.6.100升级到3.0.100 后无法连接 sqlserver 提示证书无效, 提示证书链是由不受信任的颁发机构颁发的.
|
### 9、2.6.100升级到3.0.100 后无法连接 sqlserver 提示证书无效, 提示证书链是由不受信任的颁发机构颁发的.
|
||||||
|
|
||||||
请尝试:
|
请尝试:
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user