2016-11-29 10 views
1

私がしたいこと:.netコアアプリケーション(.net 4.5を対象とする)に古いプロジェクト(.net 3.5)データコンテキストとリポジトリを使用します。私は詳細な説明と私が以下で試したことを書いた。私は私の仕事で(.NET 4.6フレームワーク上で).NETのコアを使用してMVCアプリケーションを構築してい.NETコア - 古い.netフレームワークをターゲットにする

をやりたい

。アプリケーションは、既存のデータベースと統合する必要があります。私の.NETのコアMVCアプリケーションで通常

startup.csに私のようなものを実行します。

services.DbContext<Context>(options...)をし、接続文字列を解析します。私は次にservices.AddTransient ...と私のデータベースにアクセスできるように私のコントローラにリポジトリを注入する。

しかし、私自身のデータベースコンテキストとリポジトリとクエリを設定する代わりに、自分の仕事で既存のコードベースを使用したいと思います。私は既存のソリューションと同じソリューションでプロジェクトを作成しました。既存のプロジェクトはWebフォームで、.NET 3.5を使用します。データベースとリポジトリのやり方は少し異なります。DataContextSystem.Data.Linqに、web.configから接続文字列を読み取ります。依存関係注入の代わりに、コントローラはこのクラスのインスタンスをインスタンス化するだけです。

は、私は私のstartup.cs

を試してみました何を、私はDataContextのを作成し、他のプロジェクトのリポジトリにそれを解析しようとしたが、それはYou need to reference System.Data.Linq in the .NET framework 3.5.0のようなものを言いました。

私の質問は、1).NET 4.5をターゲットにした.NETコアプロジェクトで、データコンテキストクラスとリポジトリを.NET 3.5を使用して使用することは可能ですか?

この問題に関するアドバイスをありがとうございます。

+0

2つのプロジェクトを作成します。 1つは古いコード用のNet 3.5を使用するクラスプロジェクトです。次に、クラスプロジェクトを参照するNet 4.5でメインプロジェクトを作成します。 – jdweng

+0

こんにちは@jdweng - それは実際には現在の設定です。したがって、3を使用する古いプロジェクト(スタートアッププロジェクトではありません)。5では、datacontextを初期化する必要がありますが、これは.net 4.5では同じではないと思います。私は3.5のプロジェクトと同じ方法で作成しようとしましたが、それを古いプロジェクトのリポジトリに渡しましたが、.net 4.5プロジェクトで初期化する場所が赤くなりエラーを投げて、 'system .data.linq'は.net 3.5には存在しますが、.net 4.5には存在しないようです。それは私が苦労している問題です。 – xenetics

+0

http://stackoverflow.com/questions/34830033/asp-net-5-missing-linq-to-sql-classこれを済ませたら、それらのオブジェクトを.netコアアプリケーションの使用可能なオブジェクトにラップすることができます –

答えて

0

私は実際に私の問題を解決しました。私は十分にはっきりとは思わなかった。ここに私の解決策はどのようなものであるかである:

ソリューション - .NET 3.5プロジェクト - .NET 4.5プロジェクト

私は私の新しい1に、.NET 3.5プロジェクトからリポジトリを作成していた、そしてそれはDataContextのを作成していましたweb.configファイルを探します。私が作成したにもかかわらず、データコンテキストが作成された場所に関係なく、起動プロジェクトの内部にあるweb.configが見つかるようにする必要があります。私は1つを作ったが、まだそれを検出しなかった、私はなぜ分からない。

私は古いプロジェクトに入り、datacontextを修正して接続文字列を直接受け取ることができました。しかし、これは理想的ではありません。新しい文字列から古いプロジェクトに接続文字列を渡す方法を探しますが、これは良い解決策だと思います。

@jwdenyは、私がSystem.Data.Linqへの参照を追加しなければならないと言っていたのは正しいです。このプロジェクトでは、3.5への参照を追加するように指示しましたが、System.Data.Linq 4.0を追加するだけで十分でした。

関連する問題