0

DBエンティティ層をDataAccessLayerから分離したい。

私は私のステップを書きます:

  1. 空のソリューション 'DB_sep' を作成します
  2. クラス ライブラリ 'DB' を作成します
  3. データベースの ADO.NET Entity Data Model 'DBEntity' を 'DB' プロジェクトに追加する
  4. コンソール アプリケーション「App」を「DB_sep」に追加します
  5. 「アプリ」プロジェクトに「DB」参照を追加します

「アプリ」プロジェクトから DB オブジェクトにアクセスしたいのですが、dbContext にアクセスできません。エラーが発生します。

「'DBEntity' という名前の接続文字列がアプリケーション構成ファイルに見つかりませんでした。」

次のコード行があります。

try
{
DB.DBEntity db = new DB.DBEntity();
Customer cust = db.Customers.FirstOrDefault(c => c.ID == 2);
Console.WriteLine(cust.Name);
}
catch (Exception ex)
{

Console.WriteLine(ex.Message);
}

接続文字列を「DB」にのみ保持する方法はありますか、それとも「アプリ」プロジェクトに配置する必要がありますか?

4

1 に答える 1

1

「'DBEntity' という名前の接続文字列がアプリケーション構成ファイルに見つかりませんでした。」-十分に合法のようです。

実際に実行するプロジェクトにファイルを追加しapp.configます (たとえば、適切なConnectionString 宣言を含む) 。

EF を対象としているため、特定のEntity Framework 構成ルールに注意してください。つまり、ここでは name を探していますDBEntity。実際のルールは、使用されている EF のバージョンによって異なります。app.config(参照として使用できるモデル プロジェクトに がある可能性はかなり高いです。)


DbConnection (またはおそらく接続文字列) を適切なコンストラクターのオーバーロードに指定することもできます (つまり、依存関係の挿入を介して) 。または、別の方法で別のデータベース プロバイダーを指定することもできます。

于 2013-11-14T07:42:34.860 に答える