首先要添加一个辅助类MsSqlHelper 百度一下就有, 在 .netCore3.1以上需要用Microsoft.Data.SqlClient替代Systemt.Data.SqlClient
然后在RepositoryBase里面添加常用的查询方法, 如下
using Abp.Domain.Entities;
using Abp.Domain.Repositories;
using Abp.EntityFrameworkCore;
using Abp.EntityFrameworkCore.Repositories;
using Microsoft.Data.SqlClient;
using System.Data;
namespace Xxxxx.EntityFrameworkCore.Repositories
{
///
/// Base class for custom repositories of the application.
///
/// Entity type
/// Primary key type of the entity
public abstract class XxxxxRepositoryBase : EfCoreRepositoryBase
where TEntity : class, IEntity
{
protected XxxxxRepositoryBase(IDbContextProvider dbContextProvider)
: base(dbContextProvider)
{
}
// Add your common methods for all repositories
// Add your common methods for all repositories
public int ExecuteNonQuery(string sql)
{
return MsSqlHelper.ExecuteNonQuery(GetTransaction() as SqlTransaction, CommandType.Text, sql);
}
public string ExecuteQueryString(string sql)
{
return (string)MsSqlHelper.ExecuteScalar(GetTransaction() as SqlTransaction, CommandType.Text, sql);
}
public DataTable ExecuteQuery(string sql)
{
var ds = ExecuteQueryDataSet(sql);
if (null == ds)
{
return null;
}
return ds.Tables[0];
}
public DataTable ExecuteQuery(string sql, IDbDataParameter[] dbParameters)
{
DataSet ds = MsSqlHelper.ExecuteDataset(GetTransaction() as SqlTransaction, sql, dbParameters);
if (null != ds && ds.Tables.Count > 0)
{
return ds.Tables[0];
}
else
{
return null;
}
}
public DataSet ExecuteQueryDataSet(string sql)
{
return MsSqlHelper.ExecuteDataset(GetTransaction() as SqlTransaction, CommandType.Text, sql);
}
public DataTable RunProcTable(string procName, params SqlParameter[] dbParameters)
{
DataSet ds = RunProc(procName, dbParameters);
if (null != ds && ds.Tables.Count > 0)
{
return ds.Tables[0];
}
else
{
return null;
}
}
public DataSet RunProc(string procName, SqlParameter[] dbParameters)
{
var ds = MsSqlHelper.ExecuteDataset(GetTransaction() as SqlTransaction, CommandType.StoredProcedure, procName, dbParameters);
return ds;
}
public int RunProc(string procName)
{
return MsSqlHelper.ExecuteNonQuery(GetTransaction() as SqlTransaction, CommandType.StoredProcedure, procName);
}
}
///
/// Base class for custom repositories of the application.
/// This is a shortcut of for primary key.
///
/// Entity type
public abstract class XxxxxRepositoryBase : XxxxxRepositoryBase, IRepository
where TEntity : class, IEntity
{
protected XxxxxRepositoryBase(IDbContextProvider dbContextProvider)
: base(dbContextProvider)
{
}
// Do not add any method here, add to the class above (since this inherits it)!!!
}
}