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));