Updated Repository Layer (markdown)

AlexLEWIS
2021-09-08 10:11:24 +08:00
parent 3c553f36c2
commit e4344557bd

@@ -1,7 +1,5 @@
[中文](Repository) | **English**
FreeSql.Repository 作为扩展实现了通用仓储层功能。与其他规范标准一样仓储层也有相应的规范定义。FreeSql.Repository 参考 abp vnext 接口定义和实现基础的仓储层CURD应该算比较通用的方法吧。
As an extension, FreeSql.Repository realizes the functions of the common DAL. There is a certain standard definition for the repository layer. FreeSql.Repository refers to the interface design of Abp vNext, defines and implements the basic repository layer for CURD operations.
## Features
@@ -13,12 +11,12 @@ As an extension, FreeSql.Repository realizes the functions of the common DAL. Th
## Install
环境1.NET Core .NET 5.0+
Situation 1: .NET Core or .NET 5.0+
```bash
dotnet add package FreeSql.Repository
```
环境2、.NET Framework
Situation 2、.NET Framework
```bash
Install-Package FreeSql.DbContext
```
@@ -28,8 +26,10 @@ Install-Package FreeSql.DbContext
```csharp
static IFreeSql fsql = new FreeSql.FreeSqlBuilder()
.UseConnectionString(FreeSql.DataType.Sqlite, connectionString)
.UseAutoSyncStructure(true) //自动迁移实体的结构到数据库
.Build(); //请务必定义成 Singleton 单例模式
//Automatically synchronize the entity structure to the database.
.UseAutoSyncStructure(true)
//Be sure to define as singleton mode
.Build();
public class Song {
[Column(IsIdentity = true)]
@@ -40,26 +40,26 @@ public class Song {
## Usage
方法1、IFreeSql 的扩展方法;
Method 1. The extension method of IFreeSql
```csharp
var curd = fsql.GetRepository<Song>();
```
> 注意:Repository对象多线程不安全,因此不应在多个线程上同时对其执行工作。
- 不支持从不同的线程同时使用同一仓储实例
> Note: Repository objects are not safe under multiple threads, so you should not operate them on multiple threads at the same time.
- Does not support using the same repository instance in different threads at the same time
方法2、继承实现
Method 2. Inheritance
```csharp
public class SongRepository : BaseRepository<Song, int> {
public SongRepository(IFreeSql fsql) : base(fsql, null, null) {}
//在这里增加 CURD 以外的方法
//Do something except CURD.
}
```
方法3、依赖注入
Method 3: Dependency Injection
```csharp
public void ConfigureServices(IServiceCollection services) {
@@ -78,9 +78,9 @@ public SongsController(IBaseRepository<Song> repos1) {
}
```
> 依赖注入的方式可实现全局【过滤与验证】的设定,方便租户功能的设计;
> Dependency injection can realize the global setting of **filtering and verification**, which is convenient for the design of tenant functions.
更多资料:[《过滤器、全局过滤器》](%e8%bf%87%e6%bb%a4%e5%99%a8)
For more information: [《Filters and Global Filters》](Filters-and-Global-Filters)
## State Management