【问题标题】:Using view model in MVC 6在 MVC 6 中使用视图模型
【发布时间】:2016-10-05 19:53:27
【问题描述】:

我正在尝试实现视图模型以从多个表中获取数据。但是,我收到以下错误

InvalidOperationException:实体类型“RoleManagement.Models.RolePermissionsViewModel”需要定义一个键。

下面是我的视图模型

 public class RolePermissionsViewModel
{

    public List<LMS_RolePermissions> RolePermissions { get; set; }
    public List<LMS_UserPermissions> UserPermissions { get; set; }
}

其中 LMS_RolePermissions 和 LMS_UserPermissions 是数据库中的两个不同的表。基本上我想从视图模型中的这两个表中获取数据。要获取我在代码下面编写的数据

 RolePermissionsViewModel rolemodel = new RolePermissionsViewModel
 {
    RolePermissions = dbContext.RolePermissions.ToList(),
    UserPermissions = dbContext.UserPermissions.ToList()
 };

和 DBContext 类

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);
    }
    public DbSet<LMS_LocLanguage> LMS_LocLanguage { get; set; }
    public DbSet<LMS_Permissions> Permissions { get; set; }

    public DbSet<LMS_RolePermissions> RolePermissions { get; set; }

    public DbSet<LMS_UserPermissions> UserPermissions { get; set; }

    public DbSet<RolePermissionsViewModel> RoleUserPermission { get; set; }
}

我不想定义 Key 并且不应该创建表。

我该如何解决这个问题?

【问题讨论】:

    标签: asp.net-core-mvc viewmodel model-binding


    【解决方案1】:

    建议将您的域模型和视图模型分开放置。如果我使用DbSet&lt;myclass&gt; 或在与Dbset 一起使用的另一个类中提及它,则应用程序上下文中的所有表都是由实体框架约定创建的。你的答案应该是excluding types 带有数据注释NotMapped 和流畅的api modelbuilder.ignore&lt;RolePermissionsViewModel&gt;();。 (当然,您将首先删除DbSet。如果我阅读并理解正确,您在命令数据库设置后对您的代码说“请不要创建这个,我求求你”。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-03
      • 1970-01-01
      相关资源
      最近更新 更多