2013-01-06 20 views
16

私のプロジェクトにはEntity Framework 5.0が使用されています。私はインターネットを見て、エンティティ・フレームワークのデータ・コンテキストでは、接続文字列の文字列パラメータを持つ別のコンストラクタがあることがわかりました。エンティティフレームワーク内の接続文字列を持つコンストラクタがありません。datacontext

私が生成したdata contextには、このようなコンストラクタはありません。私はベースDbContextを見て、それはそのようなコンストラクタを持っています。

コードが正しく生成されましたか?私はデータベースからコードを生成しました。これが原因だろうか?

私は、コード生成テンプレートファイルを編集して、新しいコンストラクタを追加することができます。今私は新しいコンストラクタを追加しました。このファイルは、edmxモデルのMyDataContext.ttファイルです。そこにテンプレートコードと混在したC#コードがあります。そこからno引数のコンストラクタをコピーして、それを以下に貼り付けることができます。次にそれを変更して文字列引数を追加し、その引数をDbContextコンストラクタにbase(myString)のように渡すことができます。

+1

違いをより明確にするためにコードを投稿できますか? –

+0

何を手動で追加するのを止めていますか? –

+0

また、DbContextは「コードファースト」です。既存のデータベースを使用している場合、一般的な使用法は「データベース優先」です。 –

答えて

22

必要に応じて追加できます。

生成されたファイルをチェックし、オーバーロードされたコンストラクタを追加します。

public YourContext(string connectionStr) 
     : base(connectionStr) 
    { 


    } 

これを部分クラスで定義する方が良いでしょう。世代ごとに手動で追加する必要があります。

+0

私は.ttファイルを編集することもできますが、このファイルが自動生成されているかどうかはわかりません。 – Alecu

+1

をテストし、.ttファイルに新しいコンストラクタを追加して変更しました。今働いている – Alecu

+1

@アレク:私は同じ問題を抱えていて、同じことをしました。 – sthiers

関連する問題