【发布时间】:2021-08-01 13:48:59
【问题描述】:
使用SqlSugar ORM,基于blazor,依赖注入业务服务,调用时报错。 SqlSugarService:
public static class SqlSugarService
{
private static readonly ILog log = LogManager.GetLogger(typeof(SqlSugarService));
public static void AddSqlSugarSevice(this IServiceCollection services)
{
if (services == null) throw new ArgumentNullException(nameof(services));
services.AddScoped<ISqlSugarClient>(o =>
{
var listConfig = new List<ConnectionConfig>();
listConfig.Add(new ConnectionConfig
{
DbType = DbType.SqlServer,
ConnectionString = "Server=.\\SQLEXPRESS;DataBase=Test;Uid=sa;Pwd=123456",
IsAutoCloseConnection = true,
InitKeyType = InitKeyType.Attribute
});
var dbContext = new SqlSugarClient(listConfig);
return dbContext;
});
}
}
界面:
public interface IReportRepository
{
public DataTable GetTest(string sql);
}
接口实现:
public class ReportRepository : IReportRepository
{
private ISqlSugarClient _dbBase;
public ReportRepository(ISqlSugarClient sqlSugar)
{
_dbBase = sqlSugar;
}
public DataTable GetTest(string sql)
{
return _dbBase.Ado.GetDataTable(sql);
}
}
注入:
services.AddSqlSugarSevice();
services.TryAddTransient<IReportRepository, ReportRepository>();
使用构造函数注入:
private readonly IReportRepository _reportRepository;
//[Inject]
//public IReportRepository ReportService { get; set; }
public Report(IReportRepository reportRepository)
{
_reportRepository = reportRepository;
_reportRepository.GetTest("select * from test");
}
错误:
处理请求时发生未处理的异常。 MissingMethodException:没有为类型“MyReport.Pages.Report”定义无参数构造函数。 System.RuntimeType.CreateInstanceDefaultCtorSlow(bool publicOnly, bool wrapExceptions, bool fillCache)
public partial class Report { private readonly IReportRepository _reportRepository; //[Inject] //public IReportRepository ReportService { get; set; } public Report() { } public Report(IReportRepository reportRepository) { _reportRepository = reportRepository; _reportRepository.GetTest("select * from test"); } }
【问题讨论】:
-
“没有为类型 'MyReport.Pages.Report' 定义无参数构造函数。” - 向我们展示该类。
-
添加无参构造函数后,没有报错,但是不知道为什么,已经添加了类代码
-
注入方式不对吗?我要注入,就用
-
你应该再次删除它b - 你现在有
_reportRepository == null -
显示 Report.razor 的相关部分,可能还有 Report.razor.cs。看起来您在页面上使用构造函数注入?
标签: c# .net asp.net-core orm blazor