C# .NET核心-针对旧的.NET框架

C# .NET核心-针对旧的.NET框架,c#,.net,.net-core,C#,.net,.net Core,我想做的是:在.NET核心应用程序(针对.NET 4.5)中使用较旧的项目(.NET 3.5)数据上下文和存储库。我在下面做了更详细的解释和尝试 我想做什么 我正在使用.NETCore(在.NET4.6框架上)构建一个MVC应用程序。应用程序需要与现有数据库集成 通常在.NET核心MVC应用程序中,在startup.cs中,我会执行以下操作: services.DbContext(选项…并解析连接字符串。然后我做服务。AddTransient。。。并向我的控制器注入一个存储库,让我可以访问数据库

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

我想做什么

我正在使用.NETCore(在.NET4.6框架上)构建一个MVC应用程序。应用程序需要与现有数据库集成

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

services.DbContext(选项…
并解析连接字符串。然后我做
服务。AddTransient
。。。并向我的控制器注入一个存储库,让我可以访问数据库

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

我尝试过的

在我的
startup.cs
中,我试图创建一个DataContext并将其解析到另一个项目的存储库中,但它说类似于
的内容,您需要引用.NET framework 3.5.0
中的
System.Data.Linq


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

我实际上解决了我的问题。我想我还不够清楚。以下是我的解决方案:

解决方案 -.NET3.5项目 -.NET4.5项目

我在较新的.NET3.5项目中创建了一个存储库,它创建了一个datacontext,用于查找
web.config
文件。尽管我创建了一个,但看起来它必须在启动项目内部找到
web.config
,而不管数据上下文是在哪里创建的。我做了一个,但它仍然没有检测到,我不知道为什么

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


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

我实际上解决了我的问题。我想我还不够清楚。以下是我的解决方案:

解决方案 -.NET3.5项目 -.NET4.5项目

我在较新的.NET3.5项目中创建了一个存储库,它创建了一个datacontext,用于查找
web.config
文件。尽管我创建了一个,但看起来它必须在启动项目内部找到
web.config
,而不管数据上下文是在哪里创建的。我做了一个,但它仍然没有检测到,我不知道为什么

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


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

我将构建两个项目。一个作为类项目,使用NET3.5作为旧代码。然后用NET4.5创建一个主项目,它引用project.hi@jdweng类——实际上,这是当前的设置。因此,使用3.5的旧项目(不是启动项目)需要初始化datacontext,我认为.NET4.5中不存在同样的datacontext。我试图以与.net 3.5项目相同的方式创建一个,然后将其传递到旧项目的存储库,但在.net 4.5项目中初始化它的位置变为红色并抛出错误,要求我包含
system.data.linq
,它存在于.net 3.5中,但在.net 4.5中似乎不存在。这就是我正在努力解决的问题。完成后,您可以将这些对象包装到.net核心应用程序中的可用对象中。您好@yaWang,感谢您的链接,我不想将linq添加到sql文件中,而是在我的.net 4.5应用程序中使用.net 3.5中的整个类和数据上下文。不过,感谢您的链接,尽管我不认为我能够像answer那样将存储库和类似的内容包装到linq to sql文件中。查看System.Data.Linq是否存在。Microsoft有时会淘汰库,但仍然提供它们。一个作为类项目,使用NET3.5作为旧代码。然后用NET4.5创建一个主项目,它引用project.hi@jdweng类——实际上,这是当前的设置。因此,使用3.5的旧项目(不是启动项目)需要初始化datacontext,我认为.NET4.5中不存在同样的datacontext。我试图以与.net 3.5项目相同的方式创建一个,然后将其传递到旧项目的存储库,但在.net 4.5项目中初始化它的位置变为红色并抛出错误,要求我包含
system.data.linq
,它存在于.net 3.5中,但在.net 4.5中似乎不存在。这就是我正在努力解决的问题。完成后,您可以将这些对象包装到.net核心应用程序中的可用对象中。您好@yaWang,感谢您的链接,我不想将linq添加到sql文件中,而是在我的.net 4.5应用程序中使用.net 3.5中的整个类和数据上下文。