将模型类型 ViewModel 添加到 DbContext 时出错

Error when add model type ViewModel to DbContext

提问人:محمد مهدی الماسی 提问时间:11/16/2023 最后编辑:lemمحمد مهدی الماسی 更新时间:11/16/2023 访问量:61

问:

当我想使用 EF Core 标识搭建控制器时,我收到如下错误

Error

There was an error running the selected code generator: 'Could not add Model type

'Electrical.Models.ViewModels.RegisterViewModel' to

DbContext 'DataAccessLayer.AppDbContext'. Make sure that DataAccessLayer.AppDbContext' has a DbSet property for

"Electrical.Models.ViewModels.RegisterViewModel"."

OK

我知道如果我在上下文类之外添加工厂上下文类,问题就会解决,我正在尝试,但它不起作用。

C# ASP.net-Core 连接字符串 EF-Core-7.0

评论

0赞 lem 11/16/2023
可能 stackoverflow.com/questions/29849776/ 会有所帮助...
0赞 محمد مهدی الماسی 11/16/2023
TNKS,但我认为你不要undrestand我的问题请更仔细地阅读我的问题是脚手架错误
0赞 pcalkins 11/16/2023
视图模型通常不会用作数据库(或数据)模型。这听起来像是试图基于视图模型为页面搭建脚手架,这是不正确的。引用“Electrical.Models.ViewModels.RegisterViewModel”是什么?
0赞 محمد مهدی الماسی 11/16/2023
YSE 我尝试基于 ViewModel 搭建脚手架,因为我使用 Identity 和 Identity 本身没有模型,所以我该怎么办?

答:

1赞 Yuning Duan 11/16/2023 #1

RegisterViewModel 是一个视图模型,不直接映射到数据库表。在数据库上下文中,应仅包括与数据库交互的实体模型,而不应包括视图模型。视图模型通常用于应用程序的前端与用户交互,而不是直接存储在数据库中,因此应使用实体模型而不是视图模型。

身份本身没有模型,我该怎么办?

Identity 是 ASP.NET Core 框架的一部分,用于处理身份验证和授权功能。它集成了许多类:IdentityUser、IdentityRole、IdentityUserRole、IdentityUserToken、IdentityUserLogin、IdentityUserClaim。介于两者之间,IdentityUser 是 ASP.NET Core Identity 框架中定义的类之一,它表示应用程序的用户实体。它提供了一组标准的属性来存储基本的用户信息,如用户名、电子邮件地址、密码哈希等。因此,您可以创建一个派生自 IdentityUser 的用户实体类:

public class EntityUser : IdentityUser
  {
  }

创建派生自 IdentityDbContext <EntityUser> 的数据库上下文类:

public class AppDbContext : IdentityDbContext<EntityUser>
  {
public AppDbContext (DbContextOptions<AppDbContext> options)
         : base(options)
    {
    }
}

最后,这些文档可以帮助您更好地理解身份脚手架: 在此处输入链接描述 在此处输入链接描述