Entity framework core 将类映射到存储过程resultset“;值不能为null。参数名称:entityType";

Entity framework core 将类映射到存储过程resultset“;值不能为null。参数名称:entityType";,entity-framework-core,Entity Framework Core,我首先使用的是实体框架7 RC1代码 我有以下代码 var resultset = await _db.Employees.FromSql<Employee>("dbo.sp_GetEmployees @DeptId="+ deptId).ToListAsync(); 因此,我可以通过创建 public DbSet<EmployeeQuery> EmployeeQueryItems{ get; set; } public DbSet EmployeeQueryIte

我首先使用的是
实体框架7 RC1代码

我有以下代码

var resultset = await _db.Employees.FromSql<Employee>("dbo.sp_GetEmployees @DeptId="+ deptId).ToListAsync();
因此,我可以通过创建

 public DbSet<EmployeeQuery> EmployeeQueryItems{ get; set; }
public DbSet EmployeeQueryItems{get;set;}
及 var resultset=await_db.EmployeeQueryItems.FromSql(“dbo.sp_GetEmployees@DeptId=“+DeptId).toListSync()

但是,创建一个
DBSet
属性会告诉Entity Framework在数据库中创建表,它只是一个查询对象。所以我不想做上面的事

但是显然,您可以使用和中提到的
DbContext
Set方法

所以我把代码改成 var resultset=await_db.Set().FromSql(“dbo.sp_GetEmployees@DeptId=“+DeptId).ToListAsync()

然而,这给了我一个运行时错误

ex={“值不能为空。\r\n参数名称:entityType”}

我该怎么做

因此,如果不创建一个虚拟表,这似乎是不可能的


没有办法告诉EF不要创建表吗?就像
DbSet
上的
NotMapped
属性一样,

我自己也遇到了这个问题,解决这个问题的唯一方法就是为POCO映射一个密钥

在生成的上下文旁边的分部类中,我覆盖了OnModelCreating上的
,并添加:

modelBuilder.Entity<ClassName>(entity => entity.HasKey(e => e.Id));
modelBuilder.Entity(Entity=>Entity.HasKey(e=>e.Id));

似乎满足EntityFramework的要求。

您能详细介绍一下吗?因此,在MVC控制器中,我可能有一个方法返回如下内容:public JsonResult EmployeeUserRead(){
var result=(来自appContext中的用户。用户在context中加入emp。user.Id等于emp.UserId选择new{user,emp})。ToList();返回Json(result);}
我看不出modelBuilder在哪里发挥作用??
modelBuilder.Entity<ClassName>(entity => entity.HasKey(e => e.Id));