我想知道我的DBContext是否设置正确。我试图做的Web应用程序是使用ASP.NET 5,MVC6和EF7。
它连接到包含3个表格的DB(评论,评论,电影)。这是我的模特
WebDbModel.cs
using Microsoft.AspNet.Identity.EntityFramework;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace WebExample.Models
{
public partial class Comment : IdentityUser
{
public string CommentId { get; set; }
public string ReviewId { get; set; }
public string Author { get; set; }
public System.DateTime Created { get; set; }
}
public partial class Review : IdentityUser
{
public string ReviewId { get; set; }
public string Name { get; set; }
public string Author { get; set; }
public string Creator { get; set; }
public string Status { get; set; }
public Nullable<System.DateTime> CreatedOn { get; set; }
}
public partial class Film : IdentityUser
{
public string ReviewId { get; set; }
public string FilmID { get; set; }
public string CommentId { get; set; }
public Nullable<int> CommentCount { get; set; }
public string FilmName { get; set; }
public virtual ICollection<Comment> Comments { get; set; }
public virtual Review Review { get; set; }
}
}
然后,我有一个名为
的类RegistrationDbContext.cs
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.Data.Entity;
namespace WebExample.Models
{
public class ApplicationUser : IdentityUser
{
}
public class RegistrationDbContext : IdentityDbContext<ApplicationUser>
{
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
// Customize the ASP.NET Identity model and override the defaults if needed.
// For example, you can rename the ASP.NET Identity table names and more.
// Add your customizations after calling base.OnModelCreating(builder);
}
// Registration of the DB tables we are mapping.
public DbSet<Comment> Comments { get; set; }
public DbSet<Review> Reviews { get; set; }
public DbSet<Film> Films { get; set; }
}
}
我想知道公共类ApplicationUser:IdentityUser 的用途是什么 我不确定我是否应该把它留在那里......如果我删除它,那么在我的Startup.cs中,以下代码会抱怨......
// Add Identity services to the services container.
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<RegistrationDbContext>()
.AddDefaultTokenProviders();
所以我不知道是什么取代它,因为我有评论,评论和电影模型...
所以我的问题是......我想我可以删除ApplicationUser类(当我创建我的解决方案时自动生成),因为这根本不是我模型的一部分,但是......我应该把它放在哪里呢?
不太确定我的问题是否正确,所以请提前道歉!与MVC5,EF6相比,这似乎发生了很大变化,而且我无法在 IdentityDbContext
周围编写太多文档。另外......我在 RegistrationDbContext.cs 课程中遗漏了其他内容吗?我添加的唯一额外的东西是表的注册......其余的都是默认的类。
谢谢!
答案 0 :(得分:1)
这里有几个问题。
首先,IdentityUser
是您网站的登录用户的表示,默认情况下由数据库中的AspNetUsers
表表示,并存储所有常见的内容,如电子邮件地址,密码等。
如果您想以任何方式扩展它,那么提供的ApplicationUser
子类就在那里。比如说你想存储用户的出生日期:
public class ApplicationUser : IdentityUser
{
public DateTime DateOfBirth { get; set; }
}
这会将DateOfBirth
列添加到AspNetUsers
表。
在您的情况下,如果您不想以任何方式扩展默认用户表,则只需删除ApplicationUser
类,并将代码中对它的所有引用替换为IdentityUser
。例如:
// Add Identity services to the services container.
services.AddIdentity<IdentityUser, IdentityRole>()
.AddEntityFrameworkStores<RegistrationDbContext>()
.AddDefaultTokenProviders();
其次,您的模型不应该继承自IdentityUser
。这只会将AspNetUsers
表中的所有字段添加到每个模型中,这没有任何意义,因此请从模型中删除: IdentityUser
。