Как использовать Microsoft.Data.SqlClient с Microsoft.Aspnet.identity.EntityFramework?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как использовать Microsoft.Data.SqlClient с Microsoft.Aspnet.identity.EntityFramework?

Сообщение Anonymous »

У меня есть веб-проект ASP.NET MVC на .NET 4.8, который использует Azure SQL для размещения пользователей (

Код: Выделить всё

aspnetusers
), а Microsoft.Aspnet.identity.EntityFramework используется для работы с этими таблицами.
У меня появилось новое требование использовать управляемое удостоверение Azure, поэтому я необходимо заменить System.Data.SqlClient на Microsoft.Data.SqlClient и изменить строку подключения. В другом моем проекте это работает нормально, но в этом случае Microsoft.Aspnet.identity.EntityFramework ссылается на System.Data.SqlClient, я пробовал много способов и не смог заставить его работать.
Следующий код — один из предлагаемых способов поиска в Интернете, но я все равно получаю сообщение об ошибке.

Код: Выделить всё

public class SetMicrosoftDataSqlClient : DbConfiguration
{
public SetMicrosoftDataSqlClient()
{
SetProviderServices("System.Data.SqlClient", SqlProviderServices.Instance);
}
}

[DbConfigurationType(typeof(SetMicrosoftDataSqlClient))]
public class ApplicationIdentityDbContext : IdentityDbContext
{
public ApplicationIdentityDbContext(string connectionString) : base(new Microsoft.Data.SqlClient.SqlConnection(connectionString), false) {

DbConfiguration.SetConfiguration(new SetMicrosoftDataSqlClient());
}

public static ApplicationIdentityDbContext Create()
{
var connectionString = ConfigurationManager.ConnectionStrings["IdentityDb"].ConnectionString;
return new ApplicationIdentityDbContext(connectionString);
}
}
Ошибки:

Ошибка сервера в приложении '/'.
Невозможно привести объект типа "Microsoft.Data.SqlClient.SqlConnection" к типу "System.Data.SqlClient.SqlConnection".
Описание: во время выполнения текущего веб-запрос. Просмотрите трассировку стека для получения дополнительной информации об ошибке и ее источнике в коде.
Сведения об исключении: System.InvalidCastException: невозможно привести объект типа «Microsoft.Data.SqlClient. SqlConnection» для ввода «System.Data.SqlClient.SqlConnection».
Ошибка источника:
Line 2217:

Строка 2218: // Есть ли это письмо в нашей системе?

Строка 2219: user = await this.FindByEmailAsync(email);

Строка 2220:

Строка 2221: if (user == null)
Исходный файл: F:\Repos\SBMP\WebApp\SBMP\Infrastructure\ApplicationUserManager.cs Строка: 2219
Трассировка стека:
[InvalidCastException: невозможно выполнить приведение объект типа «Microsoft.Data.SqlClient.SqlConnection» для типа «System.Data.SqlClient.SqlConnection».]

System.Data.SqlClient.SqlCommand.set_DbConnection(значение DbConnection) +26

System.Data.Common.DbCommand.set_Connection(значение DbConnection) +9

System. Data.Entity.Internal.InterceptableDbCommand.set_DbConnection(значение DbConnection) +9

System.Data.Common.DbCommand.set_Connection(значение DbConnection) +9

System.Data.Entity.Core.Common.Utils.CommandHelper.SetStoreProviderCommandState(EntityCommandentityCommand, EntityTransactionentityTransaction, DbCommand storeProviderCommand) +62

System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.PrepareEntityCommandBeforeExecution(EntityCommandentityCommand) +155

System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommandentityCommand, КомандаПоведение поведение) +25

System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute(контекст ObjectContext, значения параметра ObjectParameterCollection) +735

System.Data.Entity. Core.Objects.c__DisplayClass41_0.b__1() +85

System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction(Func

Код: Выделить всё

1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess) +292   System.Data.Entity.Core.Objects.c__DisplayClass41_0.b__0() +132   System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Func
1 операция) +189

System.Data.Entity.Core.Objects.ObjectQuery

Код: Выделить всё

1.GetResults(Nullable
1 forMergeOption) +212

System.Data.Entity.Core.Objects.ObjectQuery

Код: Выделить всё

1.b__31_0() +11   System.Data.Entity.Internal.LazyEnumerator
1.MoveNext() +39

System.Linq.Enumerable.Single(IEnumerable

Код: Выделить всё

1 source) +113 System.Data.Entity.Core.Objects.ELinq.c__14
1.b__14_3(IEnumerable

Код: Выделить всё

1 sequence) +7   System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.ExecuteSingle(IEnumerable
1 запрос, выражение queryRoot) +25

System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute(выражение выражения) +59

System.Data.Entity.Internal.Linq.DbQueryProvider.Execute(Выражение-выражение) +70

System.Linq.Queryable.Count(IQueryable

Код: Выделить всё

1 source, Expression
1 предикат) +234

System.Data.Entity.Migrations.History.HistoryRepository.QueryExists(String contextKey) +597

System.Data.Entity. Migrations.History.HistoryRepository.Exists(String contextKey) +39

System.Data.Entity.Migrations.History.HistoryRepository.GetLastModel(String&migrationId, String& productVersion, String contextKey) +58

System.Data.Entity.Internal.InternalContext.QueryForModel(DatabaseExistenceState ExistenceState) +39

System.Data.Entity.Internal.ModelCompatibilityChecker.CompatibleWithModel(InternalContext InternalContext, ModelHashCalculator modelHashCalculator, Boolean throwIfNoMetadata, DatabaseExistenceState ExistenceState) +52

System.Data.Entity.Internal.InternalContext.CompatibleWithModel(Boolean throwIfNoMetadata) , DatabaseExistenceState ExistenceState) +54

System.Data.Entity.CreateDatabaseIfNotExists

Код: Выделить всё

1.InitializeDatabase(TContext context) +109   System.Data.Entity.Internal.c__DisplayClass66_0
1.b__0() +76

System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Действие-действие) +60

System.Data.Entity. Internal.InternalContext.PerformDatabaseInitialization() +372
System.Data.Entity.Internal.c.b__58_0(InternalContext в) +9
System.Data.Entity.Internal.RetryAction

Код: Выделить всё

1.PerformAction(TInput input) +129 System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action
1 действие) +196
System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase() +86
System.Data.Entity.Internal.InternalContext.Initialize() +30
System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Тип типа сущности) +16
System.Data.Entity.Internal.Linq.InternalSet

Код: Выделить всё

1.Initialize() +53 System.Data.Entity.Internal.Linq.InternalSet
1.get_InternalContext() +15
System.Data.Entity.Infrastructure.DbQuery

Код: Выделить всё

1.System.Linq.IQueryable.get_Provider() +38 System.Data.Entity.QueryableExtensions.FirstOrDefaultAsync(IQueryable
1 источник, выражение

Код: Выделить всё

1 predicate, CancellationToken cancellationToken) +138 System.Data.Entity.QueryableExtensions.FirstOrDefaultAsync(IQueryable
1 источник, выражение

Код: Выделить всё

1 predicate) +145 Microsoft.AspNet.Identity.EntityFramework.d__67.MoveNext() +402 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +102 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +64 System.Runtime.CompilerServices.TaskAwaiter
1.GetResult() +29
SBMP.Infrastructure.d__22.MoveNext() в F:\Repos\SBMP\WebApp\SBMP\Infrastructure\ApplicationUserManager.cs:2219
System.Runtime .CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task Task) +102
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(задача) +64
System.Runtime.CompilerServices.TaskAwaiter

Код: Выделить всё

1.GetResult() +29 SBMP.Controllers.d__2.MoveNext() in F:\Repos\SBMP\WebApp\SBMP\Controllers\LoginController.cs:64 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +102 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +64 System.Web.Mvc.Async.TaskAsyncActionDescriptor.EndExecute(IAsyncResult asyncResult) +97 System.Web.Mvc.Async.c__DisplayClass8_0.b__1(IAsyncResult asyncResult) +17 System.Web.Mvc.Async.WrappedAsyncResult
1.CallEndDelegate(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResultBase

Код: Выделить всё

1.End() +49 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +32 System.Web.Mvc.Async.c__DisplayClass11_0.b__0() +58 System.Web.Mvc.Async.c__DisplayClass11_2.b__2() +228 System.Web.Mvc.Async.c__DisplayClass7_0.b__1(IAsyncResult asyncResult) +10 System.Web.Mvc.Async.WrappedAsyncResult
1.CallEndDelegate(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResultBase

Код: Выделить всё

1.End() +49 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +34 System.Web.Mvc.Async.c__DisplayClass3_5.b__4() +32 System.Web.Mvc.Async.c__DisplayClass3_0.b__1(IAsyncResult asyncResult) +91 System.Web.Mvc.Async.WrappedAsyncResult
1.CallEndDelegate(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResultBase

Код: Выделить всё

1.End() +49 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27 System.Web.Mvc.c.b__152_1(IAsyncResult asyncResult, ExecuteCoreState innerState) +11 System.Web.Mvc.Async.WrappedAsyncVoid
1.CallEndDelegate(IAsyncResult asyncResult) +29
System.Web.Mvc.Async.WrappedAsyncResultBase

Код: Выделить всё

1.End() +49 System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +45 System.Web.Mvc.c.b__151_2(IAsyncResult asyncResult, Controller controller) +13 System.Web.Mvc.Async.WrappedAsyncVoid
1.CallEndDelegate(IAsyncResult asyncResult) +22
System.Web.Mvc.Async.WrappedAsyncResultBase

Код: Выделить всё

1.End() +49 System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +26 System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10 System.Web.Mvc.c.b__20_1(IAsyncResult asyncResult,  ProcessRequestState innerState) +28 System.Web.Mvc.Async.WrappedAsyncVoid
1.CallEndDelegate(IAsyncResult asyncResult) +29
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) ) +28
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(результат IAsyncResult) +9
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +577
System.Web.HttpApplication.ExecuteStepImpl(шаг IExecutionStep) +132
System.Web.HttpApplication.ExecuteStep(шаг IExecutionStep, логическое значение и завершеносинхронно) +163


Подробнее здесь: https://stackoverflow.com/questions/792 ... ityframewo
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как использовать Microsoft.Data.SqlClient с Microsoft.Aspnet.identity.EntityFramework?
    Anonymous » » в форуме C#
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Тип сущности «Microsoft.AspNet.Identity.EntityFramework.IdentityUserLogin» требует определения ключа.
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Тип сущности «Microsoft.AspNet.Identity.EntityFramework.IdentityUserLogin» требует определения ключа.
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Преобразование приложения для использования Microsoft.Data.SqlClient в Entity Framework вместо System.Data.SqlClient
    Anonymous » » в форуме C#
    0 Ответы
    38 Просмотры
    Последнее сообщение Anonymous
  • System.data.sqlclient против microsoft.data.sqlclient
    Anonymous » » в форуме C#
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»