1

エンティティフレームワークダイアグラム(EFD)を更新しようとしているときに特定のSQL Server 2008データベースのテーブルが表示されないVisual Studio 2010.これはdbを新しいサーバーに移動する前に動作していました。このサーバー上の他のすべてのDBは、テーブルを正常に表示します(VS Entity Frameworkデザイン>右クリック>データベースからモデルを更新>追加タブ>テーブルを展開する=ここには何も表示されません)。データベースを新しいサーバーに移動した後にVisual Studio 2010のエンティティフレームワークデザイナ内のSQL Server 2008テーブルを表示できません

STR

  1. 私は、コンピュータA上のデータベースを作成し、ウェブサイトのアプリを構築するためのVisual Studio 2010で同じコンピュータに取り組んでいました。すべてがうまくいきました。

  2. は、私はその後、私はコンピュータAのVSから接続しようとしたプライマリサーバ、コンピュータB

  3. にDBやウェブサイトのアプリのファイルを移動し、私のEFDを更新しようとしているときに任意のデータベーステーブルを参照することができませんでした。

  4. コンピュータBでローカルにVSを開こうとしましたが、まだEFDテーブルが表示されません。

  5. DBをバックアップして復元して、OSファイルの問題であるかどうかを確認しました。 < - 運がない

  6. 私は新しいデータベースを作成し、SQL Serverで生成されたスクリプトを使用して新しいデータベースを構築しようとしました。

  7. また、SQL認証に戻り、Windows認証に戻り、無関係(システムやゲストなど)と思われるさまざまなユーザーにセキュリティを追加することも試みました。

私はそれが許可問題であると考えているが、私は(エンティティフレームワークの設計者に適切にテーブルを表示)作業のDBに違いはないんこのものを見つけるように見えることはできません。私はまた、どのユーザーVSがテーブル情報を取得するために使用しているのかわかりません。

私は完全に固執しています。エンティティフレームワークデザイナーでは、 "System.Data.SqlClient"、Windows統合認証(システム上の管理者アカウントとdbの所有者を使用する必要があります)を使用して接続しようとしています。次のようにエンティティフレームワークの接続文字列は次のとおりです。

metadata=res://*;provider=System.Data.SqlClient; 
    provider connection string="Data Source=localhost;Initial Catalog=myDB; 
    Integrated Security=True" 

一つの最後の音 - 私はちょうど私がそこに接続を作成することができ、私のサーバーエクスプローラに右上にVSに入ると、テーブルのすべてがうまく表示された場合。しかし、それは残念なことに私のEFDで私を助けません。

答えて

0

ステップ:

  1. 新しい空のデータベースを作成し、古い
  2. 実行スクリプトそれを壊すものを見るために一つずつ(各テーブル、ビュー、などのオフスクリプトを一つずつ生成)

これはうまくいきましたが、それは壊れていませんが、違いは、新しいスキーマとユーザーNT AUTHORITY/SYSTEMを作成していないことです。以前は完全なスクリプトを実行していた(そしてそれは動作していなかった)最初に作成されました。なぜこれが問題になるのかわかりません。すべてのテーブルは 'dbo'で作成されています。接頭辞はとにかくこのスキーマに入れられてはいけません。

これを念頭に置いて、元のデータベースに入り、NT AUTHORITY/SYSTEMのスキーマとユーザーログインを削除して、すべて正常に動作しています。もう一度、もし誰かがいるなら、私はコメントが大好きです。

私はこのユーザーのセキュリティを再度マップして、dbへのパブリックアクセスを再度許可し、同じ名前でデフォルトのスキーマを作成しても問題ありません。私は本当にこれを説明することはできません。

0

それはあなたのエンティティフレームワークの異なるバージョンかもしれませんが、何かがそれらの接続文字列から欠落しているようで、鉱山は次のようになります。

connectionString="metadata=res://*/xxx.csdl|res://*/xxx.ssdl|res://*/xxx.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=xxx;initial catalog=xxx;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

私は、プロバイダの宣言の前に原料の束を持っています。

また、.configファイルの接続文字列を削除して、この回答に記載されているようにウィザードを再実行してみましたか:How should I edit an Entity Framework connection string?

最後に、別のものを生成しようとしましたか?edmxファイルが正しく動作していますか?私はあなたがあなたのdbデザインと一致しないあなたのオブジェクト層に多くのカスタム変更を加えた場合、これが作成されないと思います。トラブルシューティングする

関連する問題