gpt4 book ai didi

oracle - 如何在没有配置文件的情况下使用 Oracle Entity Framework

转载 作者:行者123 更新时间:2023-12-04 19:44:20 25 4
gpt4 key购买 nike

是否可以创建代码优先的 Entity Framework 模型,使用 ODP.Net 连接到现有数据库,而无需在 app.config 文件中进行任何设置?

我尝试过很多不同的东西。

目前我正在设置 DbConfiguration:

    sealed class EntityFrameworkConfiguration : DbConfiguration
{
public static readonly DbConfiguration Instance = new EntityFrameworkConfiguration();

EntityFrameworkConfiguration()
{
this.SetDefaultConnectionFactory(new OracleConnectionFactory());
this.SetProviderServices("Oracle.ManagedDataAccess.Client", EFOracleProviderServices.Instance);
}
}

DbConfiguration.SetConfiguration(EntityFrameworkConfiguration.Instance);

我将 OracleConnection 直接传递到 EF 上下文中。

但是,我要么遇到以 SQL Server 格式生成的 SQL 的问题(在表别名周围使用双引号),要么出现以下错误:

An unhandled exception of type 'System.NotSupportedException' occurred in EntityFramework.dll

Additional information: Unable to determine the provider name for provider factory of type 'Oracle.ManagedDataAccess.Client.OracleClientFactory'. Make sure that the ADO.NET provider is installed or registered in the application config.

有没有人有过在不使用 crud 污染 app.config 的情况下让它工作的经验?

最佳答案

是的。要完成从 machine.config/app.config 到基于代码的配置的切换,我还必须包含对 SetProviderFactory() 的调用。

public sealed class EntityFrameworkConfiguration : DbConfiguration
{
public static readonly DbConfiguration Instance = new EntityFrameworkConfiguration();

public EntityFrameworkConfiguration()
{
SetDefaultConnectionFactory(new OracleConnectionFactory());
SetProviderServices("Oracle.ManagedDataAccess.Client", EFOracleProviderServices.Instance);
SetProviderFactory("Oracle.ManagedDataAccess.Client", new OracleClientFactory());
}
}

我还在我的应用程序启动时调用了 DbConfiguration.SetConfiguration(EntityFrameworkConfiguration.Instance);,因为我在多个程序集中有 DbContext,它们都需要共享此配置。

附带说明,我还发现这可以有效地让您的应用程序解决 ConfigurationErrorsException: The 'DbProviderFactories' section can only appear once per config file 对于您可能会遇到的情况无权修复用户的 machine.config。

关于oracle - 如何在没有配置文件的情况下使用 Oracle Entity Framework ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32429079/

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