現在、MVC4 のメンバーシップ プロバイダーと共に追加のユーザー情報を単一の .mdf ファイルに保存しようとしています。私はコードを最初に使用する単純なテスト Mvc4 アプリケーションと System.Web.Providers に取り組んできました。データベースには、モデルが変更されるたびにデータベースを削除および作成する初期化子があります。ただし、これを行うたびに、次のエラーが表示されます。
1 つまたは複数のファイルがデータベースのプライマリ ファイルと一致しません。データベースを接続しようとしている場合は、正しいファイルを使用して操作を再試行してください。これが既存のデータベースである場合、ファイルが破損している可能性があるため、バックアップから復元する必要があります。ログインで要求されたデータベース "MyNewTest" を開けません。ログインに失敗しました。ログ ファイル ~\MvcTest.ldf' がプライマリ ファイルと一致しません。別のデータベースからのものであるか、ログが以前に再構築されている可能性があります。
App_Data フォルダを見ると、2 つの .ldf ファイルがあります。MvcTest.ldf と MvcTest_log.ldf。MvcTest_log.ldf の名前を MvcTest.ldf ファイルに変更すると、すべてが再び機能します。
私のWeb.Configファイルにはこれがあります
<add name="DefaultConnection"
providerName="System.Data.SqlClient"
connectionString="Data source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\MvcTest.mdf;Initial Catalog=MvcTest;Integrated Security=True;User Instance=True;MultipleActiveResultSets=True" />
私の Context.cs ファイル:
public class Context : DbContext
{
public Context()
: base("DefaultConnection")
{
}
public DbSet<UserInformation> UserInformation { get; set; }
}
私の Initializer.cs ファイル:
public class Initializer : DropCreateDatabaseIfModelChanges<Context>
{
protected override void Seed(Context context)
{
base.Seed(context);
}
}
そしてモデルファイル:
public class UserInformation
{
public int UserInformationId { get; set; }
public Guid UserId { get; set; }
public string callsign { get; set; }
}
また、これについて間違った方法で行っているのではないかと思っています。テーブルを一緒にしたかった理由は、一貫性の制約を強制するためです。