anjoy8 / anjoy8/Blog.Core

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

Abierto
#340 0 comentarios 0 reacciones 0 asignados Ver en GitHub
很棒的提议 欢迎提交PR,给社区一起做贡献~~
Lenguaje dominante
C#
Estrellas
5.3k
Forks
1.4k
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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,我就这样处理了。

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.