Microsoft.EntityFramework.SqlServer 6.5.1
前缀已保留
dotnet add package Microsoft.EntityFramework.SqlServer --version 6.5.1
NuGet\Install-Package Microsoft.EntityFramework.SqlServer -Version 6.5.1
<PackageReference Include="Microsoft.EntityFramework.SqlServer" Version="6.5.1" />
paket add Microsoft.EntityFramework.SqlServer --version 6.5.1
#r "nuget: Microsoft.EntityFramework.SqlServer, 6.5.1"
// Install Microsoft.EntityFramework.SqlServer as a Cake Addin #addin nuget:?package=Microsoft.EntityFramework.SqlServer&version=6.5.1 // Install Microsoft.EntityFramework.SqlServer as a Cake Tool #tool nuget:?package=Microsoft.EntityFramework.SqlServer&version=6.5.1
基于 Microsoft.Data.SqlClient 的 Entity Framework 6 SQL Server 提供程序
此 Entity Framework 6 提供程序是内置 SQL Server 提供程序的可替换提供程序。
此提供依赖于现代 Microsoft.Data.SqlClient ADO.NET 提供程序,它具有以下优点,优于目前使用的驱动程序
- 当前客户端接收完整支持,而
System.Data.SqlClient
则处于维护模式 - 支持新的 SQL Server 功能,包括支持 SQL Server 2022 高级客户端协议 (TDS8)
- 支持大多数 Azure Active Directory 认证方法
- 支持用 .NET 的 Always Encrypted
请注意,此提供程序仅进行运行时更新,无法与现有的Visual Studio工具一起使用。
此包的最新版本可在 NuGet 上获取
配置
有多种方式可以配置Entity Framework以使用此提供程序。
您可以使用属性在代码中注册提供程序
[DbConfigurationType(typeof(MicrosoftSqlDbConfiguration))]
public class SchoolContext : DbContext
{
public SchoolContext() : base()
{
}
public DbSet<Student> Students { get; set; }
}
如果您在解决方案中拥有多个从DbContext继承的类,请将DbConfigurationType属性添加到所有这些类中。
或者您可以在任何数据访问调用之前使用SetConfiguration方法
DbConfiguration.SetConfiguration(new MicrosoftSqlDbConfiguration());
或者将以下行添加到您现有的派生DbConfiguration类中
SetProviderFactory(MicrosoftSqlProviderServices.ProviderInvariantName, Microsoft.Data.SqlClient.SqlClientFactory.Instance);
SetProviderServices(MicrosoftSqlProviderServices.ProviderInvariantName, MicrosoftSqlProviderServices.Instance);
// Optional
SetExecutionStrategy(MicrosoftSqlProviderServices.ProviderInvariantName, () => new MicrosoftSqlAzureExecutionStrategy());
您还可以使用App.Config基于配置
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
<providers>
<provider invariantName="Microsoft.Data.SqlClient" type="System.Data.Entity.SqlServer.MicrosoftSqlProviderServices, Microsoft.EntityFramework.SqlServer" />
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
<add name="SqlClient Data Provider"
invariant="Microsoft.Data.SqlClient"
description=".NET Framework Data Provider for SqlServer"
type="Microsoft.Data.SqlClient.SqlClientFactory, Microsoft.Data.SqlClient" />
</DbProviderFactories>
</system.data>
</configuration>
如果您使用的是.NET 6或更高版本的App.Config应用程序,您必须删除上面的<system.data>
部分,并在代码中一次性注册DbProviderFactory
DbProviderFactories.RegisterFactory(MicrosoftSqlProviderServices.ProviderInvariantName, Microsoft.Data.SqlClient.SqlClientFactory.Instance);
EDMX用法
如果您使用EDMX文件,请更新Provider
名称
<edmx:Edmx Version="3.0" xmlns:edmx="http://schemas.microsoft.com/ado/2009/11/edmx">
<edmx:Runtime>
<edmx:StorageModels>
<Schema Namespace="ChinookModel.Store" Provider="Microsoft.Data.SqlClient" >
为了使用Visual Studio设计器与EDMX文件一起使用,您必须将提供程序名称切换回
System.Data.SqlClient
还请更新EntityConnection连接字符串中的提供程序名称 - provider=Microsoft.Data.SqlClient
<add
name="Database"
connectionString="metadata=res://*/EFModels.csdl|res://*/EFModels.ssdl|res://*/EFModels.msl;provider=Microsoft.Data.SqlClient;provider connection string="data source=server;initial catalog=mydb;integrated security=True;persist security info=True;"
providerName="System.Data.EntityClient"
/>
代码更改
为了在现有解决方案中使用此提供程序,需要一些代码更改(根据需要)。
using System.Data.SqlClient;
更改为 using Microsoft.Data.SqlClient;
using Microsoft.SqlServer.Server;
更改为 using Microsoft.Data.SqlClient.Server;
以下类已被重命名,以避免与现有SQL Server提供程序中使用的System.Data.SqlClient
类冲突
SqlAzureExecutionStrategy
更改为 MicrosoftSqlAzureExecutionStrategy
SqlDbConfiguration
更改为 MicrosoftSqlDbConfiguration
SqlProviderServices
更改为 MicrosoftSqlProviderServices
SqlServerMigrationSqlGenerator
更改为 MicrosoftSqlServerMigrationSqlGenerator
SqlSpatialServices
更改为 MicrosoftSqlSpatialServices
SqlConnectionFactory
更改为 MicrosoftSqlConnectionFactory
LocalDbConnectionFactory
更改为 MicrosoftLocalDbConnectionFactory
已知问题
Azure App Service .NET Framework和连接字符串配置
如果您使用带有.NET Framework和连接字符串配置功能的Azure App Service,可能会遇到运行时问题,因为在此场景中,ProviderName
连接字符串设置被硬编码为System.Data.SqlClient
。
解决方案是使用类似以下的派生MicrosoftSqlDbConfiguration类
public class AppServiceConfiguration : MicrosoftSqlDbConfiguration
{
public AppServiceConfiguration()
{
SetProviderFactory("System.Data.SqlClient", Microsoft.Data.SqlClient.SqlClientFactory.Instance);
SetProviderServices("System.Data.SqlClient", MicrosoftSqlProviderServices.Instance);
SetExecutionStrategy("System.Data.SqlClient", () => new MicrosoftSqlAzureExecutionStrategy());
}
}
然后,在上述基于代码的配置中使用此派生类。
EntityFramework.dll已安装到GAC
如果.NET Framework GAC(全球程序集缓存)中安装了较旧的EntityFramework.dll版本,您可能会遇到以下错误
PrimitiveTypeKind
属性无效 - 根据HierarchyId
的naketype,其值无效
解决方案是从GAC中删除.dll。EF6程序集永远不应该安装到GAC中。
发行说明
6.5.0
- 最终发布版(自6.5.0-preview2以来没有代码更改)
6.5.0-preview2
- 初始预览版
产品 | 版本 兼容的和额外的计算目标框架版本。 |
---|---|
.NET | net5.0 已计算。 net5.0-windows 已计算。 net6.0 已计算。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 已计算。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。 |
.NET Core | netcoreapp3.0 已计算。 netcoreapp3.1 已计算。 |
.NET Standard | netstandard2.1 兼容。 |
.NET Framework | net462 兼容。 net463 已计算。 net47 已计算。 net471 已计算。 net472 已计算。 net48 已计算。 net481 已计算。 |
MonoAndroid | monoandroid 已计算。 |
MonoMac | monomac 已计算。 |
MonoTouch | monotouch 已计算。 |
Tizen | tizen60 已计算。 |
Xamarin.iOS | xamarinios 已计算。 |
Xamarin.Mac | xamarinmac 已计算。 |
Xamarin.TVOS | xamarintvos 已计算。 |
Xamarin.WatchOS | xamarinwatchos 已计算。 |
-
.NETFramework 4.6.2
- EntityFramework (>= 6.5.1)
- Microsoft.Data.SqlClient (>= 5.1.5)
-
.NETStandard 2.1
- EntityFramework (>= 6.5.1)
- Microsoft.Data.SqlClient (>= 5.1.5)
- Microsoft.SqlServer.Types (>= 160.1000.6)
NuGet 包 (1)
显示依赖 Microsoft.EntityFramework.SqlServer 的前 1 个 NuGet 包
包 | 下载 |
---|---|
DeepRomana467
它将转换用户输入的单位 |
GitHub 仓库
此包不被任何流行的 GitHub 仓库使用。
版本 | 下载 | 最后更新 |
---|---|---|
6.5.1 | 30,661 | 6/17/2024 |
6.5.0 | 434 | 6/14/2024 |
6.5.0-preview2-24180-01 | 8,382 | 4/18/2024 |