如何在.NET Core应用程序中使用.NET Framework dll buit与Entity Framework 6.0。

问题描述 投票:0回答:1

我们建立了一个用于日志、缓存、电子邮件、消息、图像的框架库,该库使用了Entity Framework 6.0。这个库在我们组织中的多个应用中使用。

每当一个应用程序使用这个库,必须遵循一定的准则来实现。源应用程序必须创建 <appsetting> dll将使用相同名称的值。Dll根据源文件中的 web.config 名称(这个连接字符串名称是固定的)。

在我们的新应用中,我们使用的是.NET Core;但由于我们的Framework库从 web.config 文件,而.NET Core没有,如何从.NET Core应用程序中使用这个?

entity-framework asp.net-core .net-core ef-core-2.0 .net-framework-version
1个回答
1
投票

如果你更换你的使用 ConfigurationManager.AppSettings["key"] 与使用 IConfiguration.Item["key"]在我看来,这应该是最简单的迁移路径。在.NET Core中还有更多 "花哨 "的选项,但这应该是阻力最小的路径,我认为。

如果你需要在.NET Core和.NET Framework应用程序中同时使用该库,我建议在配置周围创建一个小的包装器,例如,在.NET Core中创建一个小的包装器。

public interface IAppSettings {
    public string this[string key] { get; }
}

然后,创建它的两个实现,一个用于.NET Core,一个用于.NET Framework。类似于

public class WebConfigAppSettings: IAppSettings {
     public string this[string key] => ConfigurationManager.AppSettings[key];
}

和,一个用于.NET Core,类似于。

public class NetCoreAppSettings: IAppSettings {

    public NetCoreAppSettings(IConfiguration source) => _source = source;

    public string this[string key] => _source[key];
}

在你的通用EF库之外创建实现。

然后,让你的EF库中需要配置的类对你的EF库中的 IAppSettings 接口,并使用IoCDependency Injection在每个应用程序中使用该库注入正确的实现。

© www.soinside.com 2019 - 2024. All rights reserved.