2

http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/accessing-your-models-data-from-a-controllerから MVC4 を学習してい ます(編集: 修正済みURL)

すべてが完璧に機能していますが、データベースが更新されていませんが、プロジェクトを実行するとレコードがどこかから来ており、MSSQL でそのデータベースを見つけることができませんでした。

web.config の接続文字列は

<connectionStrings>
    <add name="PurchaseInfosDbContext" 
         connectionString="server=lakpa-pc;Integrated Security=SSPI; User ID=sa; Password=xxxxx; database=MessInfo" providerName="System.Data.SqlClient" />
</connectionStrings>

しかし、Visual Studioでデバッグすると、接続文字列が次のように取得されます

"Data Source=.\\SQLEXPRESS;Initial Catalog=Mvc4Projects.Models.ItemsDetailsDbContext;Integrated Security=True;MultipleActiveResultSets=True"

web.config から接続文字列を読み取ることになっていませんか。どのページでも接続文字列を変更していません。

を。そのチュートリアルに示されているように、SDF ファイルを含める必要がありますか? mdf ファイルに直接更新することはできませんか?

4

4 に答える 4

5

私の問題は、DbContextを継承しているクラスの名前が異なるため、指定しなくてもMVCがSQLExpressへのデフォルト接続を使用していたことでした。

さて、接続文字列名に似たクラス名を変更し、修正場所を指すようになりました。

それは誰かに役立つかもしれません。直面し解決された問題

a。DbContextを継承するクラスは、接続文字列の名前として使用する必要があります。

b。Entity Frameworkが追加するSQLクエリには複数のテーブル名があるため、属性[Table( "PurchaseInfo")]を使用して単数形にします。

c。POCOメソッドを使用する場合、私の例のように命名規則に従わないと、キーが「PurchaseInfoID」である必要がありますが、ItemIdを使用するとキーの問題が発生します。したがって、この問題を解決するには、属性[Key]を使用してください。

public  class PurchaseInfoDbContext : DbContext
    {
        public DbSet<PurchaseInfo> ItemsDetails { get; set; }
    }

    [DisplayName("Items Details")]
    [Table("PurchaseInfo")]
    public class PurchaseInfo
    {
        [HiddenInput]
        [Key]
        public int ItemId { get; set; }
}
于 2012-08-16T04:59:02.827 に答える
2

同じ問題があります。すでにApp_Dataフォルダーがある場合は、それを削除してから、[プロジェクト]->[ASP.Netフォルダーの追加]->[App_Data]から新しいフォルダーを追加します。

于 2012-12-14T19:40:30.183 に答える
0

この記事を見つけました - 問題を解決するhttp://blogs.msdn.com/b/sqlexpress/archive/2011/12/09/using-localdb-with-full-iis-part-1-user-profile.aspx . ただし、これは、ユーザーが IIS を介してアプリを実行している場合に適用されます

于 2014-02-12T14:08:03.617 に答える
0

「インターネット アプリケーション」で新しい MVC 4 プロジェクトを開始すると、SQL Express データベースを指すデフォルトの接続文字列が追加されます。その接続文字列が web.config にまだ含まれていませんか?

于 2012-08-15T05:11:09.690 に答える