Fra*_*ois 2 sql-server entity-framework-core asp.net-core
我在 ASP.NET Core 中有一个服务,我向其中注入了我的 Entity Framework Core 上下文,该上下文用于定义我的服务将需要的私有函数。该 func 是关于调用存储过程。
对该 func 的第一次调用系统地导致错误
ConnectionString 属性尚未初始化。
但是,后续调用没问题。
这是服务类构造函数:
private readonly Func<Task<long>> _myFunc;
public MyService(MyContext context) => _myFunc= async () =>
{
using (var connection = context.Database.GetDbConnection())
{
await connection.OpenAsync();
using (var command = connection.CreateCommand())
{
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "sp_MyStoredProcedure";
command.Parameters.Add(new SqlParameter("@AParameter", SqlDbType.Int) { Value = 1 });
return (long)await command.ExecuteScalarAsync();
}
}
};
Run Code Online (Sandbox Code Playgroud)
这是stacktrace:
System.InvalidOperationException: ConnectionString 属性尚未初始化。
在 System.Data.SqlClient.SqlConnection.PermissionDemand()
在 System.Data.SqlClient.SqlConnectionFactory.PermissionDemand(DbConnection outerConnection)
在 System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource 1 重试, DbConnectionOptions userOptions) 在 System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.OpenAsync(CancellationToken cancellingToken) --- 从上一个抛出异常的位置开始的堆栈跟踪结束 --- 在 Microsoft。 EntityFrameworkCore.Storage.RelationalConnection.OpenDbConnectionAsync(布尔错误预期,CancellationToken 取消令牌)1 retry, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource
更新:
当我在线设置断点await connection.OpenAsync()并查看变量时connection,连接字符串就在那里并且是正确的。
请注意,它MyServices被注入到控制器构造函数中。服务注册是这样完成的startup.cs:
services.AddTransient<IMyService, MyService>();
Run Code Online (Sandbox Code Playgroud)
尽量不要按照/sf/answers/763829111/ 中的建议处理连接。
所以,基本上,替换using (var connection = context.Database.GetDbConnection())为var connection = context.Database.GetDbConnection(),看看它是否有帮助。
| 归档时间: |
|
| 查看次数: |
2522 次 |
| 最近记录: |