1

我目前正在尝试将其他用户信息与 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; }
}

我也想知道我是否以错误的方式解决这个问题。我希望将表放在一起的原因是强制执行一致性约束。

4

0 回答 0