4

Entity Framework を SQL Azure に対して動作させることができません。これは私だけですか、それとも互換性を意図していませんか? (VS2008 で EF のオリジナル リリースと、より最近の VS2010 Beta 2 バージョンを試しました)

これを確認するために、可能な限り単純なシナリオを作成しました。1 つのテーブルをローカルの SQL Server 2008 インスタンスに追加します。テーブルには、整数型の主キーと文字列列の 2 つの列があります。(1, foobar) の値を持つ単一の行をテーブルに追加します。次に、まったく同じ設定を SQL Azure データベースに追加しました。

コンソール アプリケーションを作成し、ローカル データベースから EF モデルを生成しました。アプリケーションを実行すると、すべて問題なく、単純なクエリから単一の行を返すことができます。接続文字列を更新して SQL Azure に接続すると、失敗します。問題なく SQL Azure データベースに接続しますが、クエリは結果の処理に失敗します。

例外情報を使用して、最初の問題を突き止めました。概念モデルには、単一の定義済みエンティティのエンティティ セットに設定された属性 Schema="dbo" がありました。この属性を削除したところ、別のエラーで失敗しました...

"Invalid object name 'testModelStoreContainer.Test'."

「Test」はもちろん、定義したエンティティの名前であるため、返された結果からエンティティを作成しようとしているように見えます。しかし、なんらかの理由で、この些細なシナリオを解決することはできません。

本当に根本的な間違いを犯しているのですか、それとも SQL Azure は EF と互換性がありませんか? そして、それは私にはただクレイジーに思えます。WebRole で EF を使用し、次に RIA サービスを Silverlight クライアント エンドで使用したいと考えています。

4

3 に答える 3

3

私自身はこれを行っていませんが、ケビン・ホフマンと同様に、EF チームのメンバーは行っていると確信しています。

したがって、移植プロセスの 1 つのステップで道に迷ったことが原因である可能性があります。

ローカル データベースに対して動作するものから、手動で EDMX (XML) を更新しようとしたようです。

これを行う場合、ほとんどの変更は EDMX (別名 SSDL) の StorageModel 要素で必要になります。しかし、ConceptualModel (別名 CSDL) 要素に変更を加えているようです。

私の推測では、SSDL 内の dbo スキーマへのすべての参照を、SQL Azure スキーマのスキーマに置き換えるだけで済みます。

お役に立てれば

アレックス

于 2009-12-12T17:23:22.133 に答える
2

主な質問に答えるために-はい、少なくともEntity Frameworkv4はSQLAzureで使用できます-私は(.Net Framework3.5。SP1からの)初期バージョンで正直に試していません。

少し前に、私は完全なプロジェクトを行い、その経験についてブログに書きました:http: //www.sanderstechnology.com/? p= 9961うまくいけば、これが少し役立つかもしれません!

于 2010-07-25T16:41:51.540 に答える
1

Microsoft の Windows Azure ドキュメントには、How to: Connect to Windows Azure SQL Database Using the ADO.NET Entity Frameworkが含まれています。

モデルを作成したら、次の手順で SQL Azure を Entity Framework と共に使用する方法を説明します。

  1. 「方法: スクリプトの生成ウィザードを使用してデータベースを移行する (Windows Azure SQL データベース)」の手順に従って、School データベースを SQL データベースに移行します。

  2. SchoolEFApplicationプロジェクトで、App.Configファイルを開きます。SQL データベースに接続するように接続文字列を変更します。

    <connectionStrings>
        <add name="SchoolEntities"
             connectionString="metadata=res://*/SchoolDataModel.csdl|res://*/SchoolDataModel.ssdl|res://*/SchoolDataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=<provideServerName>.database.windows.net;Initial Catalog=School;Integrated Security=False;User ID=<provideUserID>;Password=<providePassword>;MultipleActiveResultSets=True;Encrypt=True;TrustServerCertificate=False&quot;"
             providerName="System.Data.EntityClient"/>
    </connectionStrings>
    
  3. F5 キーを押して、SQL データベースに対してアプリケーションを実行します。
于 2012-12-26T08:57:53.337 に答える