我目前正在尝试将其他用户信息与MVC4中的成员资格提供程序一起存储在单个.mdf文件中。我一直在研究一个使用Code first的简单测试Mvc4应用程序和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; }
}
我也想知道我是否会以错误的方式解决这个问题。我希望这些表一起使用的原因是强制执行约束条件。