2

私は素晴らしい仕事をしているEFアプリケーションを持っていますが、それはシッククライアントです。私はAzureとMSのコア2フレームワークを使用してサービスを利用したいと思っていました。私は、Web APIをそのままの状態で構築します。それがうまくいくかテストしてみてください。次に、EFを使用して爆弾を使用するDataAccessライブラリへの参照を追加しましょう。 OuopsはNuGetを通じて新しいプロジェクトにEFを追加するのを忘れていました。接続文字列への参照が見つからないことがわかります。わかりましたので、私はそう(すでにWPFのクライアントのプロジェクトにどのような作品からのコピー)などのローカル・インスタンス・データベースへappsettings.jsonでそれをワイヤー:EF 6.2で既存のデータプロジェクトをデータベースの最初の方法でWeb API Core2 Controllerにロードするにはどうすればよいですか?

{ 
    "Logging": { 
    "IncludeScopes": false, 
    "Debug": { 
     "LogLevel": { 
     "Default": "Warning" 
     } 
    }, 
    "Console": { 
     "LogLevel": { 
     "Default": "Warning" 
     } 
    } 
    }, 
    "ConnectionStrings": { 
    "ExpensesEntities": "metadata=res://*/Expenses.csdl|res://*/Expenses.ssdl|res://*/Expenses.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=Expenses;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" 
    } 
} 

そして私はそうのように私のスタートアップを変更します。

public void ConfigureServices(IServiceCollection services) 
{ 
    services.AddMvc(); 
    services.AddScoped(_ => new MoneyEntry.DataAccess.ExpensesEntities()); 
} 

私はそれが

'FileNotFoundException: Could not load file or assembly 
'System.Configuration.ConfigurationManager, 
    Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. 
    The system cannot find the file specified.' 

言って私のコンテキストを取得し、破るしようとすると見ることができますしかし、それは、EFコンテキストのこのセクションに壊しています

public ExpensesEntities() 
     : base("name=ExpensesEntities") 
    { 
    } 

だから私はちょうど正しい順序で接続文字列の参照を持つ必要があると私はかなり確信して、私は接続文字列または設定のいくつかの種類の読み込みどこに行っています。私はこのスレッドに従っていた:https://docs.microsoft.com/en-us/ef/core/miscellaneous/connection-strings

私の他の懸念は、EFフレームワークを混在させることができますか?私はデータアクセスレイヤーをEF 6.1.3に書きました。6.2にアップグレードしましたが、.NET Coreには独自のライブラリがあります。 EF.NET CoreとEF.NET Frameworkを混在させることはできますか?コアでもDALを書き直そうとするべきですか?それが何であれ、それは好きではないように見えます。そして、私はそれがどのように動作するかを見るために最初から自己完結型のモデルを追加できるかどうかを試してみるかもしれません。しかし、少し便利です私は、人々が新しい.NETコア2

EDIT 11-15-17オーケー に経験ブレンドフレームワークを持っていた場合ので、このリンクhttps://docs.microsoft.com/en-us/aspnet/core/data/entity-framework-6#handle-connection-strings以下を参照してくださいするように依頼だろうと思いました。しかし、コード一番の方法論を前提としているだけでなく、依存性注入を望むという理由で、APIだけではなくMVCサイトを行っています。簡単にするには、まずDatabaseでこれを行い、appsettingsにEF接続文字列を認識させるだけですか?過去に別のプロジェクトを作成し、EFセクションをコピーして新しいアプリケーション設定に貼り付けるだけで、うまく動作します。

"Expenses": "Server=.;Database=Expenses;Trusted_Connection=True;MultipleActiveResultSets=true" 

は、私が唯一のId int型のプロパティを持っている私の最も簡単なテーブルのいずれか、および文字列説明プロパティを使用:ASP.NETコア2がのAppSettingsを使用しているので、私は次のようにシンプルな接続文字列を行うことを試みました。また、私はちょうどそうのようなデータを取得しようとしているブレークポイントにヒットしたときに、コントローラを読み込むに爆弾:

var data = await _context.tdType.ToListAsync(); 
return View(data); 

と私はキーを定義する必要があり、最初のコードを使用しています前提としています。私は、EF Coreがモデルの最初の動作を処理できないと仮定していますか?コード1の方法論で生成されたPOCOを飾る必要がありますか?もしそうなら、私はEF全体のコードを最初に再作成し、プロシージャとビューをどのように扱うかを考慮する必要があるかもしれません。

これを理解するための鍵は、私が使用しているこのモデルがビュー、関数、およびプロシージャを持っていると思います。私が最初にコードの知っている少しから、DbSetオブジェクトのマッピングオプションを更新して、Insert、Update、Deleteオプションをオーバーライドすることができます。しかし、テーブルに直接関係しない複数の操作であるビュー、関数、およびプロシージャは、本当にミステリーです。それは、EF Coreが単にフル機能を十分に備えていない可能性があります。しかし、その理由のために、私は既存のEF 6.2を後ろにしているピギーがこれを修正するだろうと考えました。

あなたが the docsから、直接ネットコアでEF 6コンテキストを使用することはできません
+0

誰も本当に質問に答えた。レスポンスの多くの部分では、具体的な内容や読み方が不足していました。私は、細かくない回答には、恩恵を意図的に与えるつもりはありません。もし誰かが言いたいのであれば: "データベースは最初に動作しません"、ここに記事がありますが、それはどうしてですか?それがMSの立場なら、私はそれでいいです。しかし、私はそれが以前よりももっと働くようになっているという事実を知っていますし、.NETからFROM COREの私の参照プロジェクトに戻っています。だから、ちょうどヒアリング: "この他の技術を試して"または "ちょうどコードを最初に行う"は本当に質問に答えることさえ試みていません。 – djangojazz

答えて

2

.NETのコアプロジェクトがサポートされていないので、あなたは、ASP.NETのコアプロジェクトでEF6コンテキストを置くことができませんEF6コマンド(Enable-Migrationsなど)に必要なすべての機能が必要です。

ASP.NET CoreアプリケーションでEntity Frameworkの6を使用するために推奨される方法は、クラスライブラリにEF6コンテキストとモデルクラスを置くことです:あなたはしかし、別のアセンブリを使用してEF 6を使用することができます

フルフレームワークをターゲットとするプロジェクト

しかし、実質的に.Net Coreプロジェクトは完全な.Netフレームワークに依存するため、クロスプラットフォームにはなりません。

あなたは、クロスプラットフォームの機能のためにネットのコアを使用して計画していないと、あなたのEF 6コードで多くを投資しているあなたは書き換えることができますので、あなたはaps.net完全なフレームワークのWeb APIサービスの作成について考えるかもしれない場合シッククライアントからシンクライアント/ウェブAPIアーキテクチャへのあなたのアプリ。要するに

+0

これは、MSの新しい方法を試してみることに大きな関心を寄せています。ミッションクリティカルなアプリではありませんが、新しい原則を学び、それを適用するために余暇に書いたアプリです。私はそれがすでに第2セクションで提案していることをやっている。接続文字列の取得に基づいて動作していません。 – djangojazz

+0

appsettings.jsonに接続文字列を追加しましたか? – MadOX

+0

皆さんも質問を一読していますか? – djangojazz

0

、EFコア2.1は、それがのような主要な機能の多くを持っていないので、まだ生産のための準備ができていない。

我々はトライを持っています新しいプロジェクトでEF Core 2.1を使用することはできますが、それはうまく機能しません。
私はあなたが慎重にロードマップと問題リストを確認すべきだと思う:
Road map
Issue list

もう一つの選択肢はOrmLiteまたはDapperのを使用することです: https://github.com/ServiceStack/ServiceStack.OrmLite
https://github.com/StackExchange/Dapper

私はそのOrmLiteとDapperのARENを知っていますあなたが探しているものはありませんが、現在ネットコアで利用できる最も安定したライブラリです。私たちは2つのプロジェクトを完了しました.1つは大まかなもの、もう1つはOrmLiteです。
このヘルプが必要です。

+0

あなたは正しいです、私の答えはあなたが望むものではありません。しかし、あなたが今購入できるパプリカは、あなたが期待したものではないのですが、それは苦いですか? –

+0

あなたはそれを料理し続けますか、苦い味を取り除くために料理をたくさん入れてください。または、別のレシピを使用して同じ結果を得るだけですか? –

+0

私の答えに戻って、あなたはあなたがEF 6.1.2モデル全体をコアコアプロジェクトに移すことができると思うので、EFコアの限界を確実には得られないと思います。だからこそ私はその限界について話しており、あなたにいくつかの選択肢を与えています。あなたの実際のデータでEF Coreを試して、次のステップを決めるべきだと思います。 –

0

最新のEFで従来の.netフレームワークで新しいlibプロジェクトを作成できます。データベースからのエンティティとdbcontextクラスを作成するためのユースケース "CodeFirst from Database"の後。生成したコードを新しい.netcoreまたは.netstandartプロジェクトに移動します。おそらくdbcontextに接続文字列を追加して変更する必要があります。できます。私は古いプロジェクトを新しい.netcoreプロジェクトに移行していました。幸運))

+0

しかしそれは問題ではありません。私はあなたがコードを最初に使用しなければならないという制限があり、最初にデータベースを使用したり、それを動作させることができないのか不思議です。コードは、プロシージャ、ビュー、関数などを作成する必要があるまで素晴らしいものです。次に、移行にスクリプトを手動で追加するか、新しいリファクタ全体について考える必要があります。私は特にデータベースが最初に実行できるかどうか不思議です。 – djangojazz

+0

@djangojazzデータベース構造を移行するのに役立つ小さなトリックです。残念なことに、幸いにも、大きなチーム(歴史性、よりコントロール)での開発に優れた第1回マイグレーション。プロジェクトでは、すべてのsqlscriptを含むSQL_scriptsフォルダを作成しました。また、 'code-migrate'はSQLファイルを読み込んで実行することができます。別の小さなトリックです))) –

+0

それは問題ではありません。コードを最初に説明し、それを行う方法を説明しています。データベースへの参照が最初に動作するかどうか、現在WPFアプリケーションとASPでうまく動作している他のプロジェクト全体ではないと話しています。NETの伝統的なアプリ。 – djangojazz

関連する問題