23

あきらめる。私はこれを見つけました: http://blogs.msdn.com/b/adonet/archive/2011/03/15/ef-4-1-model-amp-database-first-walkthrough.aspx そして、それはクールだと思いました。そこで私はすぐにモデルを再設計して、最高の 2 つの世界を活用しました。

しかし、現在、私のモデルは新しいデータベースの作成 (または既存のデータベースへのテーブルの追加) に失敗しています。次のエラーが表示されます。

Database First および Model First 開発用の T4 テンプレートを使用して生成されたコードを Code First モードで使用すると、正しく動作しない場合があります。Database First または Model First を引き続き使用するには、実行中のアプリケーションの構成ファイルで Entity Framework 接続文字列が指定されていることを確認してください。Database First または Model First から生成されたこれらのクラスを Code First で使用するには、属性または DbModelBuilder API を使用して追加の構成を追加してから、この例外をスローするコードを削除します。

で:

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

そして、それは私の接続文字列です:

    <add name="ForumContextContainer"
 providerName="System.Data.SqlClient"
 connectionString="Data Source=.\SQLExpress; Initial Catalog=iForum; Integrated Security=True"/>

ノート。後で初期カタログを追加して、うまくいくか試してみましたが、まったく同じでした。

4

4 に答える 4

32

これは間違った接続文字列です。モデルファースト/データベースファースト(EDMX)を使用する場合は、.ssdl、.msl、および.csdlメタデータファイルを参照するエンティティ接続文字列を使用する必要があります。また、EDMXからモデルを作成する場合は、設計時にデータベースを作成する必要があることにも注意してください。SQLスクリプトを生成して実行し、データベースを作成する必要があります。

于 2011-05-09T21:56:12.327 に答える
2

このエラーは通常、誰かがソリューションのクラス ライブラリに最初に EDMX/db を追加したときに表示されると思います。その場合は、クラス ライブラリ プロジェクトの App.config ファイルに追加された接続文字列が、web.config または exe プロジェクトの構成ファイルで使用できることを確認してください (コピーして貼り付けるだけです)。

于 2013-01-03T23:39:01.007 に答える
0
Add this connection string to web config and make changes:

<add name="Entities" 
connectionString="
metadata=res://*/EFmodel.csdl|res://*/EFmodel.ssdl|res://*/EFmodel.msl;
provider=System.Data.SqlClient;provider 
connection string=&quot;
data source=SAI-PC;
initial catalog=OrderDB;
user id=sa;
password=Pass$123;
MultipleActiveResultSets=True;
App=EntityFramework&quot;" 
providerName="System.Data.EntityClient" />

EFmodel is my .edmx file name.

OrderDB is database name.
于 2015-02-15T07:15:42.833 に答える
-1

これを削除またはコメントしてください:

//protected override void OnModelCreating(DbModelBuilder modelBuilder)
//{
//    throw new UnintentionalCodeFirstException();
//}

そして、接続文字列を有効なものに変更してください。

于 2015-07-02T09:25:42.997 に答える