gpt4 book ai didi

c# - Entity Framework 不断尝试连接到旧的 ADO.NET 提供程序,即使它已更改

转载 作者:行者123 更新时间:2023-11-29 18:22:41 26 4
gpt4 key购买 nike

我将 MySQL 项目的数据库连接更改为从 MySQL 到目标 SQL Server。但是,当尝试运行针对 SQL Server 中的数据库的 Update-Database -StartProjectName ProjectName 时,我收到以下错误

Schema specified is not valid. Errors: (0,0) : error 0152: No Entity Framework provider found for the ADO.NET provider with invariant name 'MySql.Data.MySqlClient'. Make sure the provider is registered in the 'entityFramework' section of the application config file. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.

所以我试图确保我的项目没有 MySQL

  1. 使用ctrl+F搜索所有MySQL关键字:没有找到。
  2. 通过 NuGET 包管理器卸载 MySQL 包

当我在配置文件中明确指出 Entity Framework 应该使用默认的 MS SQL 提供程序时,为什么 Entity Framework 不断询问我 MySQL 提供程序?

这是我的配置文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="Connection" connectionString="Data Source=SQLSERVER123;Database=DB123;Integrated Security=true" providerName="System.Data.SqlClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
<小时/>

这是我的 DbContext 文件:

using System;
using System.Data.Entity;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;

namespace ProjectName.MSSQL
{
public class ProjectNameContext:DbContext
{
public ProjectNameContext()
: base("Connection")
{

}

public static ProjectNameContext Create()
{
return new ProjectNameContext();
}

public DbSet<Users> Users { get; set; }
}
}

最佳答案

所以对我有用的是 I created my own DbConfiguration class and referenced it using the codeConfigurationType property in App.config

我的自定义Dbconfiguration

using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Data.Entity.SqlServer;

namespace ProjectName.MSSQL
{
public class MSSQLDbConfiguration:DbConfiguration
{
public MSSQLDbConfiguration()
{
this.SetProviderServices("System.Data.SqlClient", System.Data.Entity.SqlServer.SqlProviderServices.Instance);
this.SetDefaultConnectionFactory(new LocalDbConnectionFactory("v11.0"));
}
}
}

我的应用程序配置

<entityFramework codeConfigurationType="ProjectName.MSSQL.MSSQLDbConfiguration, ProjectName.MSSQL">
...
any stuff...
...
</entityFramework>

关于c# - Entity Framework 不断尝试连接到旧的 ADO.NET 提供程序,即使它已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46442055/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com