anjoy8 / anjoy8/Blog.Core

BaseRepository的类增加了其他Model的调用方法,方便不同库的操作。

Aperta
#340 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
很棒的提议 欢迎提交PR,给社区一起做贡献~~
Lingua principale
C#
Stelle
5.3k
Fork
1.4k
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

IBaseRepository接口:
```
//使用其他Model的方法
Task> Query();
Task> Query(Expression> whereExpression);
Task QueryById(object objId);
Task Add(T model) where T : class, new();
Task Add(List listEntity) where T : class, new();
Task Update(T model) where T : class, new();
Task Update(List listEntity) where T : class, new();
```

BaseRepository类:

```
private SqlSugarClient _dbBase_Other;

private ISqlSugarClient dbOther()
{
if (_dbBase_Other == null)
_dbBase_Other = _dbBase;

/* 如果要开启多库支持,
* 1、在appsettings.json 中开启MutiDBEnabled节点为true,必填
* 2、设置一个主连接的数据库ID,节点MainDB,对应的连接字符串的Enabled也必须true,必填
*/
if (Appsettings.app(new string[] { "MutiDBEnabled" }).ObjToBool())
{
if (typeof(T)
.GetTypeInfo()
.GetCustomAttributes(typeof(SugarTable), true)
.FirstOrDefault((x => x.GetType() == typeof(SugarTable))) is SugarTable sugarTable
&& !string.IsNullOrEmpty(sugarTable.TableDescription))
{
_dbBase_Other.ChangeDatabase(sugarTable.TableDescription.ToLower());
}
else
{
_dbBase_Other.ChangeDatabase(MainDb.CurrentDbConnId.ToLower());
}
}
return _dbBase_Other;
}

//使用其他Model的方法

///
/// 查询
///
///
///
public async Task> Query()
{
return await dbOther().Queryable().ToListAsync();
}

public async Task> Query(Expression> whereExpression)
{
return await dbOther().Queryable()
.WhereIF(whereExpression != null, whereExpression)
.ToListAsync();
}

public async Task QueryById(object objId)
{
return await dbOther().Queryable().In(objId).SingleAsync();
}

///
/// 写入实体数据
///
/// 实体类
///
public async Task Add(T entity) where T : class, new()
{
var insert = dbOther().Insertable(entity);
return await insert.ExecuteReturnIdentityAsync();
}

///
/// 写入实体数据
///
/// 实体类
/// 指定只插入列
/// 返回自增量列
public async Task Add(List listEntity) where T : class, new()
{
if (listEntity != null && listEntity.Count > 0)
return await dbOther().Insertable(listEntity.ToArray()).ExecuteCommandAsync();
else
return 0;
}

public async Task Update(T model) where T : class, new()
{
return await dbOther().Updateable(model).ExecuteCommandHasChangeAsync();
}

///
/// 更新实体数据
///
/// 实体集合
///
public async Task Update(List listEntity) where T : class, new()
{
if (listEntity != null && listEntity.Count > 0)
return await dbOther().Updateable(listEntity.ToArray()).ExecuteCommandAsync();
else
return 0;
}

///
/// 查询数据
///
/// 实体类
///
public ISugarQueryable SqlQueryableByDB(string sql) where T : class, new()
{
return dbOther().SqlQueryable(sql);
}
```

IBaseServices接口:
```
Task> Query();
Task> Query(Expression> whereExpression);
Task QueryById(object objId);
Task Add(T model) where T : class, new();
Task Add(List listEntity) where T : class, new();
Task Update(T model) where T : class, new();
Task Update(List listEntity) where T : class, new();
```
BaseServices类:
```
public async Task> Query()
{
return await BaseDal.Query();
}

public async Task> Query(Expression> whereExpression)
{
return await BaseDal.Query(whereExpression);
}

public async Task QueryById(object objId)
{
return await BaseDal.QueryById(objId);
}

public async Task Add(T model) where T : class, new()
{
return await BaseDal.Add(model);
}

public async Task Add(List listEntity) where T : class, new()
{
return await BaseDal.Add(listEntity);
}

public async Task Update(T model) where T : class, new()
{
return await BaseDal.Update(model);
}

public async Task Update(List listEntity) where T : class, new()
{
return await BaseDal.Update(listEntity);
}
```
使用:
Model中加分库的连接
![image](https://user-images.githubusercontent.com/3362813/228996527-01a3e658-6d9d-46ca-981b-567d78329da5.png)
可以使用其他Model的Services查询。
![image](https://user-images.githubusercontent.com/3362813/228996709-2aca208c-9e4c-451b-ae4c-16df9e5e7bfe.png)

主要是懒的写多个Service,我就这样处理了。

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.