【问题标题】:.NET Core - Targetting old .NET framework.NET Core - 针对旧的 .NET 框架
【发布时间】:2016-11-29 12:20:38
【问题描述】:

我想要做的:在 .net 核心应用程序(针对 .net 4.5)中使用较旧的项目 (.NET 3.5) 数据上下文和存储库。我在下面给出了更详细的解释和我的尝试。

我想做的事

我在工作中使用 .NET Core(在 .NET 4.6 框架上)构建 MVC 应用程序。应用程序需要与现有数据库集成。

通常在我的 .NET Core MVC 应用程序中,在 startup.cs 中,我会执行以下操作:

services.DbContext<Context>(options...) 并解析连接字符串。然后我执行services.AddTransient... 并向我的控制器注入一个存储库,这样我就可以访问数据库了。

但是,我不想设置自己的数据库上下文、存储库和查询,而是想在工作中使用现有的代码库。我在与现有解决方案相同的解决方案中创建了我的项目。现有项目是 Web 表单,并使用 .NET 3.5。他们处理数据库和存储库的方式有点不同——它在System.Data.Linq 中使用DataContext,并从web.config 读取连接字符串。因此,控制器无需依赖注入,而是实例化此类的一个实例。

我的尝试

在我的startup.cs 中,我尝试创建一个 DataContext 并将其解析到另一个项目的存储库中,但它说类似You need to reference System.Data.Linq in the .NET framework 3.5.0

针对 .NET 4.5 的 .NET Core 项目是否可以使用使用 .NET 3.5 构建的数据上下文类和存储库?

【问题讨论】:

  • 我会构建两个项目。一个使用 Net 3.5 处理旧代码的类项目。然后使用引用类项目的 Net 4.5 创建一个主项目。
  • 嗨@jdweng - 实际上这是当前的设置。因此,使用 3.5 的旧项目(不是启动项目)需要初始化数据上下文,我认为在 .net 4.5 中不存在相同的数据上下文。我尝试以与 .net 3.5 项目相同的方式创建一个,然后将其传递给旧项目的存储库,但是我在 .net 4.5 项目中对其进行初始化的位置变红并抛出错误,要求我包含来自 @987654331 的内容@,存在于 .net 3.5 中,但似乎不存在于 .net 4.5 中。这就是我正在努力解决的问题。
  • stackoverflow.com/questions/34830033/… 完成后,您可以将这些对象包装成 .net 核心应用程序中的可用对象
  • 嗨@yaWang,感谢您提供的链接,我不是要在 .net 4.5 应用程序中添加 linq 到 sql 文件,而是使用 .net 3.5 中的整个类和数据上下文。不过感谢您提供的链接,尽管我认为我不能像答案那样将存储库和此类文件包装在 linq to sql 文件中。
  • 签入菜单项目:添加参考:Net.查看 System.Data.Linq 是否存在。 Microsoft 有时会废弃库,但仍然提供它们。

标签: c# .net .net-core


【解决方案1】:

我实际上解决了我的问题。我觉得我说得不够清楚。这是我的解决方案:

解决方案 - .NET 3.5 项目 - .NET 4.5 项目

我在我的新项目中从 .NET 3.5 项目创建了一个存储库,它正在创建一个查找 web.config 文件的数据上下文。即使我创建了一个,看起来它必须尝试在启动项目中找到web.config,无论数据上下文是在哪里创建的。我做了一个,但它仍然没有检测到,我不知道为什么。

我能够进入旧项目并修改数据上下文以直接接收连接字符串。但是,这并不理想 - 我将寻找一种方法将连接字符串从我的新项目传递到旧项目中,我认为这是一个很好的解决方案。

@jwdeny 说我必须添加对 System.Data.Linq 的引用是正确的。项目告诉我添加对3.5的引用,但是添加System.Data.Linq 4.0就足够了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-21
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 2020-02-29
    • 2010-09-07
    • 1970-01-01
    相关资源
    最近更新 更多