将数据访问逻辑移动到ASP.Net 5中的另一个项目

时间:2016-02-25 13:14:32

标签: c# asp.net-mvc visual-studio-2015 asp.net-core-mvc dnx

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

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

很长一段时间.Net开发人员,我总是将我的数据访问层放在.Net Assembly projet(或几个)中,然后引用到我的每个客户端项目中(例如:Web应用程序,Web API,控制台应用程序或单元测试项目。)

我的问题是:

  • 仍有可能(我猜是这样)
  • 建议的方法是什么(装配项目或内部nuget包)
  • 如何设置(应该使用哪种项目模板来使用xproj Web应用程序)

2 个答案:

答案 0 :(得分:1)

可以,但您必须管理此问题: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)

答案 1 :(得分:0)

按照这个SO问题(What are my options for sharing code between DNX / ASP.NET 5 projects (project.json / xproj) and other C# projects (csproj) within a single solution?) - 顺便说一下我的问题 - 我决定尝试默认的approch,这是一个&#34; 类库(包) &#34;项目

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

  • 我的主项目.json引用了框架dnx451dnxcore50
  • 类库(Package)使用框架net451dotnet5.4创建了一个project.json文件。

我必须将后者更改为dnx451dnxcore50以使一切正常。

这仍然是一个无法解释的解决方案,因为AFAIK,dnx451dnxcore50现在应该由dnx451dnxcore50取代,但我必须做相反的事情,或者我的现有的参考文献(包括"EntityFramework.Commands": "7.0.0-rc1-final")将被打破。

无论如何,该解决方案正在运行,因此对于那些有兴趣在共享项目中分离其EF逻辑的人,我建议阅读本文,该文章解释了如何在类库项目中启用ef命令(迁移和数据库更新):{ {3}}