gpt4 book ai didi

entity-framework - 没有配置文件的 Entity Framework 6?

转载 作者:行者123 更新时间:2023-12-03 11:35:50 24 4
gpt4 key购买 nike

我有一个不能使用配置文件的应用程序,必须通过代码(使用 EntityConnectionStringBuilder)为实体上下文设置连接字符串。

然而,问题随之而来:

No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlClient'.



由于我不能使用标准的 app.config 文件,我是不是搞砸了 EF6?如果我没记错的话,这在 EF4 中不是问题。
所以 entityFramework-tag 中的设置是我希望在代码中设置的。
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>

最佳答案

我使用的是没有 App.config 文件的 EF 6,我只是将连接字符串传递给我的 DBContext(连接是从其他地方的配置文件中读取的,但这取决于你)。只需从配置文件中删除所有 EF 内容。

这是我如何让它工作的。

public partial class MyDbContext : DbContext, IMyDbContext
{
public MyDbContext(string connectionString,
DbValidationMode validationMode = DbValidationMode.Enabled,
DbLazyLoadingMode lazyLoadingMode = DbLazyLoadingMode.Disabled,
DbAutoDetectMode autoDetectMode = DbAutoDetectMode.Enabled)
: base(((EntityConnectionStringBuilder)new EntityConnectionStringBuilder()
{
Provider = "System.Data.SqlClient",
ProviderConnectionString = connectionString,
Metadata = @"res://*/Contexts.Test.MyModel.csdl|res://*/Contexts.Test.MyModel.ssdl|res://*/Contexts.Test.MyModel.msl"
}).ToString())
{
this.Configuration.ValidateOnSaveEnabled = validationMode.Equals(DbValidationMode.Enabled);
this.Configuration.LazyLoadingEnabled = lazyLoadingMode.Equals(DbLazyLoadingMode.Enabled);
this.Configuration.AutoDetectChangesEnabled = autoDetectMode.Equals(DbAutoDetectMode.Enabled);
}
... Etc

然后我只是将这个上下文注入(inject)到我所有的服务中。

我使用的是数据库优先设计,所以我发现修改 T4 模板更容易。

可能有更好的方法可以做到这一点,但我根本没有遇到任何问题。

关于entity-framework - 没有配置文件的 Entity Framework 6?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22539131/

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