这是我创建的演练的一部分。包含一些特定于使其与代码优先迁移一起使用的步骤,但您应该能够使用这些步骤完成您想要的。
首先创建一个新的 ASP.NET MVC 项目。如果您希望包含的代码匹配,则将其称为联系人。身份验证默认为个人用户帐户,这是我们在这种情况下想要的。暂时取消选择云中的主机。您可以稍后输入您的发布设置。创建项目后,打开 Package Manager Console 和 Install-Package EntityFramework。现在,由于我们正在执行 Code First,因此添加了一个简单的模型类。
public class Contact {
public int ContactID { get; set; }
public string Name { get; set; }
public string Phone { get; set; }
}
此时您通常会添加控制器等,但由于本文关注的是数据方面的内容,我们将跳过所有这些内容。接下来我们要添加我们的数据库上下文。直接将它添加到 Models 命名空间中。
public class ContactContext : IdentityDbContext {
public ContactContext()
: base("ContactContext") {
}
public DbSet<Contact> Contacts { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
base.OnModelCreating(modelBuilder);
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
public static ContactContext Create() {
return new ContactContext();
}
}
这里有几点需要注意。由于我们将 Identity 表合并到应用程序的上下文中,因此我们希望从 IdentityDbContext 继承,而不仅仅是 DbContext。此外,我不喜欢使用在 Web.config 中创建的生成的“DefaultConnection”,因此我将“ContactContext”作为连接字符串名称传递给基本构造函数。我们将在一分钟内修改连接字符串。如果您正在输入 OnModelCreating 方法,Visual Studio 应该添加对 base.OnModelCreating 的调用,但如果不确定,请确保添加它,因为它对于构建标识表至关重要。尽管不是必需的,但您可以将模型构建器配置为不使用复数表名。添加身份代码使用此上下文所需的 Create 方法。此外,当您添加代码时,您需要右键单击并 Resolve 以添加适当的 using 语句。
正如所承诺的,这里是要在站点根目录的 web.config 中更新的修改后的连接字符串。 name 属性更改为对应用程序有意义的值,而 AttachDbFilename 和 Initial Catalog 值更改为比自动生成的名称更易于用户使用的值。
<add name="ContactContext" connectionString="Data Source=
(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\ContactContext.mdf;Initial
Catalog=ContactContext;Integrated Security=True"
providerName="System.Data.SqlClient" />
现在转到 Models 文件夹并打开 IdentityModels.cs 文件。从此处剪切 ApplicationUser 类并将其粘贴到您的 Contact.cs 文件中。同样,您必须解决一些缺失的命名空间。此时您可以安全地删除 IdentityModels.cs 文件。由于我们已经消除了 ApplicationDbContext,我们需要在 ApplicationDbContext 上进行查找,并在一些地方将其替换为 ContactContext。您应该能够进行干净的构建。