我目前正在尝试将其他用户信息与 MVC4 中的成员资格提供程序一起存储在单个 .mdf 文件中。我一直在研究一个简单的测试 Mvc4 应用程序,它首先使用 Code 和 System.Web.Providers。数据库有一个初始化器,它会在模型更改时删除并创建数据库。但是,每当我这样做时,我都会收到一条错误消息:
一个或多个文件与数据库的主文件不匹配。如果您尝试附加数据库,请使用正确的文件重试该操作。如果这是现有数据库,则文件可能已损坏,应从备份中恢复。无法打开登录请求的数据库“MyNewTest”。登录失败。日志文件 ~\MvcTest.ldf' 与主文件不匹配。它可能来自不同的数据库,或者之前可能已重建日志。
如果我查看 App_Data 文件夹,我现在有两个 .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; }
}
我也想知道我是否以错误的方式解决这个问题。我希望将表放在一起的原因是强制执行一致性约束。