1

これは少し奇妙なものです。SQLコンパクト4のものを使用して、MVC 3コードの最初の開発を行っています。すべて正常に動作していますが、新しいコントローラーを足場にしようとすると問題が発生します。新しいコントローラー ダイアログを起動し、エンティティとデータ コンテキスト (どちらも同じソリューション内の別のアセンブリにあります) を選択すると、次のエラーが発生します。

「MyNamespace.MyClassName」のメタデータを取得できません。データベース ファイルへのアクセスは許可されていません。[ 1884,ファイル名=C:\Program Files\Microsoft Visual Studio 10.0\Common7\EntityContext.sdf,SeCreateFile ]

そのファイルは現時点ではディスク上に存在しません - EntityContext.sdf ファイルは私の App_Data フォルダーにあります。そのファイルを作成しようとしているかどうかはわかりませんが (もしそうならなぜですか?)、もしそうなら、私は管理者としてログインしていないので、権限がありません. その場合、別の作業フォルダーなどを定義する必要がありますか?

今、管理者として実行してみましたが、動作するので、間違いなくProgram Filesディレクトリにファイルを作成しようとしています。一時ファイルの設定がどこかにあるはずですか?

どんな助けでも素晴らしいでしょう:)

4

3 に答える 3

0

T4Scaffolding を使用しているときに、この問題に遭遇しました。MVCScaffolding nuget パッケージをインストールして問題を回避し、「MVCScaffolding: E​​F データ アクセス コードを使用した読み取り/書き込みアクションとビューを備えたコントローラー」テンプレートを使用しました。同様のコントローラー アクションとビューを生成します。T4Scaffolding nuget パッケージをアンインストールして再インストールし、これがバグなのかインストールが破損しているのかを確認できませんでした。

于 2013-08-13T20:33:56.950 に答える
0

問題に対する答えは見つかりましたか?私は同じ問題を抱えていましたが、展開の変換を通じて処理しました...

Web.Configでは、SDF へのフル パスを使用しました。

<configuration>
    <connectionStrings>
        <add 
          name="DBContext" 
          connectionString="Data Source=C:\full-path\DBContext.sdf" 
          providerName="System.Data.SqlServerCe.4.0" />
...

Web.Release.configで、 connectionString属性を置き換えます...

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add 
      name="DBContext" 
      connectionString="Data Source=\DBContext.sdf" 
      xdt:Transform="SetAttributes" 
      xdt:Locator="Match(name)"/>
  </connectionStrings>
  <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />
  </system.web>
</configuration>

リリース後、正しい「|DataDirectory|」をデプロイします 「C:\full-path\」ではなく設定を行います。

ただし、元の問題の修正を希望します!!

PK :-)

于 2011-11-14T11:53:32.987 に答える