0

私のデータベースはApp_Dataの.mdfに保存されており、正常に機能しています。私のアプリケーションは、レコードを追加、編集、削除できます。

しかし、テーブルは見えません。サーバーエクスプローラーを開いて.mdfをアタッチし、テーブルを表示しようとすると、そこに何もリストされていません。ファイルをSQLServerManagement Studioにも添付しましたが、そこに表示されるテーブルはフォルダー内のテーブルのみSystem Tablesです。

MSDNのテクノバブルから収集できたものから、これはアクセス許可または所有権の問題である可能性があります。データベースに接続してクエリを実行し、レコードを編集/削除できるため、アクセス許可についてはわかりません。だから多分所有権; 所有していないテーブルがdbo表示されない可能性があることをどこかで読みました。しかし、その場合、アプリケーションの所有権名が何であるか、またはManagementStudioやServerExplorerでさえ他のユーザーが所有するテーブルを表示する方法がわかりません。

答えがそこにある場合の接続文字列は次のとおりです。

<add name="EFDBContext" connectionString="Data Source=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=|DataDirectory|MLDatabase.mdf;Database=EFDbContext;User Instance=true" providerName="System.Data.SqlClient"/>

私を正しい方向に向けてくれる人に感謝します!

ETA。これは同様の問題のように見えますが、私のデータベースはスクリプトではなくEntity Framework(Code-Firstモデル)によって生成されたため、そこでの解決策が適用されるかどうかはわかりません。

4

4 に答える 4

1

私も同様の問題を抱えていました。データベースのバックアップのスクリプトを作成し、それをmssqlサーバーに追加して、代わりに接続文字列を新しいデータベースにポイントしました。

于 2012-03-03T11:36:09.853 に答える
0

テーブルが表示されなかった理由は、もちろん、テーブルが.mdfになかったためです。コメントで述べたように、SQLServerによって選択された場所でそれらを見つけました。

回避策は、EFが必要な場所にSQL Serverデータベースを構築し、SQL Serverサービスを停止し、それをApp_Dataフォルダーに移動し、接続文字列を適切に変更してから、ASP.NETプロジェクトにアタッチすることです。

もう1つの問題は、SQL Serverのネットワークサービスには、C:\ Users \MeフォルダーまたはDocumentsandSettingsフォルダーに移動してネットワークサービスに直接アクセス許可を割り当てるまで、何も実行するアクセス許可がないことです。そうして初めて、たとえば、データベースをSQL ServerManagementStudioに接続できるようになります。これは、VisualStudioがSQLServerをインストールし、VSが独自のプロジェクトを保持しているファイルへのアクセス許可を拒否した場合にも当てはまります。理解できません; IMOは、これを認識している開発者であれば、自分の仕事を遂行するために最初に行うことは、とにかくネットワークサービスにその許可を与えることです。

于 2012-03-06T08:02:35.237 に答える
0

構成でdefaultConnectionFactoryタイプを確認してください。これはデフォルトのようであるため、LocalConnectionFactoryに設定されていると思います。

次のように変更すると、SQLインスタンスが使用されます。

<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
  <parameters>
    <parameter value="Data Source=.; Integrated Security=True; MultipleActiveResultSets=True;" />
  </parameters>
</defaultConnectionFactory>

DBは、名前空間と一致する名前でSQL Management Studio(SQLMS)に表示されます。

于 2014-11-13T03:37:44.440 に答える
0

気にしないでください。それに応じて、Web.configファイルの接続文字列を再構成する必要があります。-サーバー名から「\SQLEXPRESS」接尾辞を削除します。-「UserInstance=true」キー/値のペアを削除します。

DbContextクラスがStudentDbContextの場合、Database=StudentDb;を配置します。

または

于 2016-02-13T06:18:42.320 に答える