2012-03-26 6 views
1

私は、アダプタ構造でエンティティフレームワークを使用しようとしています。私の目標は、複数の接続を管理できる単一の.edmx構造を持つことです。エンティティフレームワーク(C#)を持つアダプタ

私はこれらのアダプタを持っている必要があります。

  • ファイルベースのデータベース(オラクルからのカスタムプロバイダと)(SqlServerCE 3.5)
  • のMySQL
  • (MySQLのような)のOracle
  • のSQLServer

ウィジェットからのデータ接続を持つBean(依存性注入オブジェクト)を受け取るDAOクラスは、spそのBeanの環境情報を取得すると、DAOはデータベース・ファクトリー・クラスを介して正しいアダプターをロードします。

My Databaseファクトリは、実際のアダプタクラスをロードします(たとえば、抽象アダプタクラスを実装するmysql A_Mysql.csの場合)。特に

、私は、アダプタの接続方法変更することができますホップを理解したいと思います。私のDAOで、同じ.edmxを使用する

public override Entities createConnection(DbConnection dbBean) 
    { 
     string conn = 
      @"metadata=res://*/Toolkit.Database.External.ADO.ADODatabase.csdl" + 
      @"|res://*/Toolkit.Database.External.ADO.ADODatabase.ssdl" + 
      @"|res://*/Toolkit.Database.External.ADO.ADODatabase.msl;" + 
      @"provider=MySql.Data.MySqlClient;" + 
      "provider connection string=\"Persist Security Info=True;server=" + dbBean.Server + ";" + 
      "Port=" + dbBean.Port + ";" + 
      "User Id=" + dbBean.Username + ";"+ 
      "Password=" + dbBean.Password + ";" + 
      "database=" + dbBean.Schema + "\""; 

     Entities entities = new Entities(conn); 

     return entities; 
    } 

を...

私はかなり確信していました残念ながら、このシステムはSqlCEからのエラーを常に返しています(SqlServerCEから最初の.emdxを生成しましたが、そのデータベースに関する情報は含まれておらず、App.configファイルにはデータベース情報が保存されていません)...

あなたは私を助けることができますか?必要に応じて、さらに詳しい情報をお送りください。 ありがとうございます。

答えて

0

データアクセス層は、データベース接続レベルではなく、エンティティプロバイダレベルで抽象化する必要があります。基本的には、リポジトリパターンの使用について話しています。特定のデータベースプラットフォームのLinqクエリを正しいSQL構文に変換する責任があるため、サポートするプロバイダごとに個別のコンテキストを用意する必要があります。各コンテキストは、同じインタフェース(リポジトリインタフェース)を実装する必要があります。あなたのコードでは、実際のコンテキストタイプではなく、そのインターフェースに対してすべてを行います。次に、Dependency Injectionフレームワーク(Ninjectなど)を使用して、使用しているデータベースプロバイダの正しいコンテキスト実装のインスタンス化を管理します。

+0

私を助けることができますか?私はまだいくつかの困難があります:[ここ](http://stackoverflow.com/questions/9903988/modify-ssdl-runtime-for-ado-net-and-entity-framework) – Gian

0

私は複数のデータベース[それはスペイン語でだ:)]

Post

よろしくへの複数の接続を使用する方法のマイルサイト上のポストをしました。

0

EDMX自体にデータベースプロバイダに関する情報が含まれているため、動作しません。また、EDMXに格納されているデータベース全体の記述は、単一データベースプロバイダを対象としています。 SQL Server 2005と2008の違いもあります。サポートしたいデータベースごとに少なくともSSDLの部分が必要です。

+0

私を助けることができますか?私はまだいくつかの困難があります:[ここ](http://stackoverflow.com/questions/9903988/modify-ssdl-runtime-for-ado-net-and-entity-framework) – Gian

関連する問題