2

基本的に私がやろうとしているのは、MicrosoftのASP.NETMVC3.0に頭を悩ませることです。Visual Studio2010Ultimateを使用しています。http://www.asp.net/mvc/videos/5-minute-introduction-to-aspnet-mvcのビデオチュートリアルに従って、起動して実行しました。その結果、ローカルデータベースにアクセスするWebサイトが作成されました。 。

質問1:

そのローカルデータベースがどこにあるか誰か知っていますか?どこかでデフォルトのSQLEXPRESSデータベースを使用していると思います。サーバーエクスプローラーには表示されず、App_Dataフォルダーにも表示されません。どこのフォルダにも見つかりません。それは、私が理解しているように、プロジェクトのモデルを使用して自動的に生成されたものであり、どこに配置されているかはどこにもわかりません。

質問2:

私が本当にやりたいのは、プロジェクトをオンラインで試してみるということです。これは、AppHarbor.comを介してすでに行っています。これにより、MS SQL Serverデータベースを作成し、Web.configでbungに置き換える接続文字列を提供できますが、接続文字列を置き換えてソリューションを再構築しました-AppHarborデータベース(私はかなり無意味です)をサーバーに追加した後でもエクスプローラー、私のサイトはまだ私が見つけることができないとらえどころのないSQLEXPRESSデータベースを使用しています。

Web.configで行った変更は次のとおりです。

  <connectionStrings>
    <add name="ApplicationServices"
         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
         providerName="System.Data.SqlClient" />
  </connectionStrings>

フォーマットに

<connectionStrings>
    <add name="TestDB"
         connectionString="Server=SERVER;Database=DBNAME;User ID=USERID;Password=DBPASSWORD;" />         
</connectionStrings>

質問1を知っておくといいのですが、本当に気になるのは質問2です。データベースへのどの参照を見逃したので、データベースが使用したくないデータベースを使用し、何も知らない原因になっていますか?特に、接続文字列をWeb.configから完全に削除しても、問題なく動作するため、1つ存在する必要があると思います。

どんな助けでも大歓迎です。

4

5 に答える 5

3

それで、私はついに問題が何であるかを理解しました-ここでみんなの助けによって少なからず助けられました。だからありがとう。私が間違っていた主なことが2つありました。

まず、接続文字列の名前が重要であることがわかります。MVCで設定したコンテキストにちなんで、接続文字列に名前を付ける必要がありました。そのため、私の「TestDB」は間違っていました。代わりに、私の質問でリンクしたビデオチュートリアルでは、接続文字列を「SportsContext」と呼ぶ必要があります。

したがって、最終的に、Web.Configの接続文字列エントリは次のようになります。

<connectionStrings>
<add name="SportsContext" connectionString="Server=SERVER;Database=DBNAME; User ID=USERID;Password=PASSWORD" providerName="System.Data.SqlClient" />
</connectionStrings>

興味深いことに、これは、appharborで使用する必要があると彼らが言っていることではありません。第二に、私が見逃していたもう1つの重要なポイントは、MVCがSQLEXPRESSでデータベースを喜んで構築する一方で、SQLServerでは同じことを行わないということです。また、SQL Serverで自分でビルドする場合は、ID列や外部キーの自動インクリメントなど、すべてを正しく取り込む必要があります。

これらの2つの変更は、私のサイトを稼働させるために必要なすべてでした。

于 2011-08-03T20:05:12.527 に答える
1

最初にC:\ WINDOWS \ Microsoft.NET \ Framework\\aspnet_regsql.exeを実行する必要があります

プログラムして、リモート(またはローカル)データベースをポイントします

これを概説するリンクは次のとおりです-http ://msdn.microsoft.com/en-us/library/x28wfk74.aspx

次に、新しいデータベースを指すようにWeb構成エントリを変更します。

あなたが使用する必要があります

<add name="ApplicationServices" connectionString="DataSource=YourRemoteServerName;Initial
Catalog=YourDBName; Persist Security Info=True; UserID=YourUName;Password=YourPassword providerName="System.Data.SqlClient"
/>
于 2011-07-10T03:07:53.580 に答える
0

質問1:

[Windows]->[スタート]->[ファイル名を指定して実行]ボックスにservices.mscと入力し、SQLEXPRESSサービスが開始されていることを確認します。

VS:データベースへの接続のサーバーエクスプローラーで、[SQL Server]を選択し、サーバーとして次のように入力します。。\ SQLEXPRESSこれで、接続をテストできるようになります。

質問2:HMMM iは、web.configを介してSQLEXPRESSからデフォルトのSQLインスタンスに変更しようとするだけで、同じ問題を再現できます。EFはSQLEXPRESSでDBを作成し続けます。面白いですが、私には手がかりがありません。

于 2011-07-10T00:58:04.457 に答える
0

探すべきいくつかのこと...

  1. この要素では、他の接続文字列を定義する前に、を使用して既存の接続文字列をクリアして<ConnectionStrings>みることができます。これにより、問題の原因となっている可能性のある継承された接続文字列がすべてクリアされます。<clear />
  2. MVC3を使用しているので、Entity Frameworkを使用していると仮定しますか?DbContext(ef 4.1)またはその他のContextオブジェクトが、「TestDB」を使用するように適切に構成されていることを確認してください。

SQLExpress dbの場所については、元の接続文字列から、ローカルのSQLExpressサーバーを参照しているように見えます。

于 2011-07-10T01:43:40.173 に答える
0

appharborを使用してデプロイしようとしたときに、これと同じ問題が発生しました。プロジェクトディレクトリを確認します。おそらく実際には3つのweb.configファイルがあります。web.config、web.config.debug、およびweb.config.releaseです。Visual Studio 2010は、プロジェクトのビルド状態に基づいて変換を使用して、適用する変換を決定します。これを理解するには、appharborの変換テスターを確認してください。

また、Entity Frameworkプロジェクトの設定が間違っていると、モデルに変更を加えるたびにappharborでデータベースが削除される可能性があるため注意してください。また、資格情報が付与されたアカウントには、そのデータベースを再作成する権限がありません。

組み込みのaspnetユーザーモデルを使用している場合は、ローカルのsqlexpressではなくappharborデータベースを使用してモデルを設定してください。これがそのハウツーです。

于 2011-07-10T01:44:24.613 に答える