缺少模型/ IdentityModel.cs

时间:2016-12-06 19:55:59

标签: c# asp.net-core asp.net-core-mvc

我是.NET新手,目前正在通过this tutorial学习ASP.NET Core MVC。

我的开发环境:

  • Ubuntu 16.04.1 LTS
  • .Net Core 1.0.0-preview2-1-003177
  • Visual Studio Code 1.7.2
  • generator-aspnet 0.2.5(创建项目脚手架)

因此,我使用yo aspnet创建了一个新项目,并选择了Web Application,其中包括基于个人用户帐户的身份验证。在本教程中,我现在处于“创建您的模型”部分,并对如何继续感到困惑。

具体来说,教程要求您创建的模型如下所示:

模型/ Model.cs

using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;

namespace EFGetStarted.AspNetCore.NewDb.Models
{
    public class BloggingContext : DbContext
    {
        public BloggingContext(DbContextOptions<BloggingContext> options)
            : base(options)
        { }

        public DbSet<Blog> Blogs { get; set; }
        public DbSet<Post> Posts { get; set; }
    }

    public class Blog
    {
        public int BlogId { get; set; }
        public string Url { get; set; }

        public List<Post> Posts { get; set; }
    }

    public class Post
    {
        public int PostId { get; set; }
        public string Title { get; set; }
        public string Content { get; set; }

        public int BlogId { get; set; }
        public Blog Blog { get; set; }
    }
}

然而,在该页面上,有一个警告:

  

如果使用“个人用户帐户”而不是“无”进行身份验证   然后,实体框架模型将添加到您的项目中   型号\ IdentityModel.cs。使用您将学习的技术   通过演练,您可以选择添加第二个模型,或者扩展它   包含实体类的现有模型。

当我找不到他们引用的文件Models / IdentityModel.cs时,我的困惑就开始了。我确实看到 Models / ApplicationUser.cs ,如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;

namespace EFGetStarted.AspNetCore.NewDb.Models
{
    // Add profile data for application users by adding properties to the ApplicationUser class
    public class ApplicationUser : IdentityUser
    {
    }
}

...和 Data / ApplicationDBContext.cs ,如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using EFGetStarted.AspNetCore.NewDb.Models;
namespace EFGetStarted.AspNetCore.NewDb.Data
{
    public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
            : base(options)
        {
        }
        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);
        }
    }
}

上面的警告信息让我对如何继续感到困惑。由于Models / IdentityModel.cs不存在,我是否将Model.cs的内容放入Models / ApplicationUser.cs或Data / ApplicationDBContext.cs中,还是按原样保留所有内容?

3 个答案:

答案 0 :(得分:2)

  

我找不到他们引用的文件,Models / IdentityModel.cs。

generator-aspnet使用different version of templates而不是Visual C# Web Template shipped with Visual Studio 2015

文件Models/IdentityModel.cs应包含类ApplicationUserApplicationDbContext。它们与generator-aspnet使用的版本相同。

  

我将Model.cs的内容放入Models / ApplicationUser.cs或   Data / ApplicationDBContext.cs或者我按原样保留所有内容

您可以保持原样 - 这些文件位于何处并不重要。

答案 1 :(得分:0)

您可能选择了“不进行身份验证”,这就是为什么您没有“ Models / IdentityModel.cs”文件的原因

答案 2 :(得分:-1)

警告适用于您选择无身份验证以外的身份验证方法。

如果您选择个人用户帐户,将为使用数据库创建新的Entity Framwork模型。

您可能选择了“无身份验证”,这就是您没有“Models/IdentityModel.cs”文件的原因