将数据访问逻辑移动到 ASP.Net 核心 1.0 测试版 (DNX) 中的另一个项目

Move Data Access Logic to another project in ASP.Net Core 1.0 beta version (DNX)

编辑 :

在最初的问题中,我提到了 ASP.NET5。它针对计划于 2021 年发布的 .Net Classic / .Net Core 的未来版本。问题在 .Net Core 1.0 的第一个测试版发布时被问到。此时命名为ASP.Net5/.Net vNext/DNX.

因此,在原问题中,请理解版本号如下:


我正在 ASP.Net 5 和 ASP.NET MVC 6 中开始一个新项目,运行 在 DNX 上,并从 Visual Studio 的默认 MVC 6 模板开始2015. 我的数据层使用 Entity Framework 7 代码优先方法。

然后我的 Web 应用程序项目采用新方法:xproj 文件,引用不同的 json 配置文件(项目、解决方案、npm 和 bower 管理器)。

作为长期的 .Net 开发人员,我总是在 .Net Assembly 项目(或多个)中拥有我的数据访问层,然后引用到我的每个客户端项目(例如:Web 应用程序、Web API、控制台应用程序或单元测试项目)。

我的问题是:

这是可能的,但你必须解决这个问题:https://github.com/aspnet/dnx/issues/3047

您必须通过将此添加到 Startup 的配置方法来删除任何本地化支持:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    //...
    var localizationOptions = new RequestLocalizationOptions()
    {
        SupportedCultures = new List<CultureInfo> { new CultureInfo("") },
        SupportedUICultures = new List<CultureInfo> { new CultureInfo("") }
    };

    var invariantCulture = new RequestCulture(new CultureInfo(""), new CultureInfo(""));

    app.UseRequestLocalization(localizationOptions, invariantCulture);
    //...
}

否则您将遇到此 FileNotFoundException:

FileNotFoundException: Couldn't find file EntityFramework.resources.
at System.Reflection.RuntimeAssembly.InternalGetSatelliteAssembly(String name, CultureInfo culture, Version version, Boolean throwOnFileNotFound, StackCrawlMark& stackMark)
at System.Resources.ManifestBasedResourceGroveler.GetSatelliteAssembly(CultureInfo lookForCulture, StackCrawlMark& stackMark)

按照这个 SO 问题 () - 顺便说一句,这与我的问题很接近 - 我决定尝试使用默认方法,即“Class 库(包)”项目。

我必须更改对运行时的引用才能使其正常工作:

  • 我的主要 project.json 参考框架 dnx451dnxcore50.
  • Class 库(包)创建了一个带有框架 net451dotnet5.4.
  • 的 project.json 文件

我不得不将后者更改为 dnx451dnxcore50 以使一切正常。

这仍然是一个无法解释的解决方案,因为据我所知,dnx451dnxcore50 现在应该替换为 dnx451dnxcore50,但我不得不做相反的事情,否则我现有的参考文献(包括 "EntityFramework.Commands": "7.0.0-rc1-final")将被破坏。

无论如何该解决方案都有效,所以对于那些有兴趣在共享项目中分离他们的 EF 逻辑的人,我建议阅读这篇文章,它解释了如何在 [=45] 中启用 ef 命令(迁移和数据库更新) =] 图书馆项目:http://www.jerriepelser.com/blog/moving-entity-framework-7-models-to-external-project