[英]Entity Framework Core many to many relation error: Object reference not set to an instance of an object
[英]Entity Framework Core 2 with DBQuery - Get Object reference not set to an instance of an object
我正在使用 Entity Framework Core 2 并尝试了 BDQuery。 当我尝试 map Select 中的Select
FromSql()
请求的结果时,出现错误:
Object 引用未设置为 object 的实例。
这是我的 DBContext class:
public class MyDbContext : DbContext
{
public MyDbContext(DbContextOptions<MyDbContext> options)
: base(options) { }
public DbQuery<MyEntity> MyEntities { get; set; }
}
这是 MyEntity class 定义:
public class MyEntity
{
public int Id { get; set;}
}
如果在我的代码中进行以下调用,它可以正常工作( _dbContext
当然是MyDbContext
类型):
var result = await _dbContext.MyEntities
.FromSql("Exec MyStoredProc")
.Select(s => new { s.Id })
.ToListAsync()
MyStoredProc
返回一个名为 Id 的列。
但是,如果我像这样声明 class MyDTO:
public class MyDTO
{
public int MyId { get; set;}
}
然后像这样拨打电话:
var result = await _dbContext.MyEntities
.FromSql("Exec MyStoredProc")
.Select(s => new MyDTO {MyId = s.Id })
.ToListAsync()
然后引发异常:
Object 引用未设置为 object 的实例
如果我在 MyDTO Class 定义中通过Id
重命名字段MyId
,它会再次正常工作。
关于这种行为的任何想法? 为什么当字段名没有 map 和 SQL 列名时会发生错误?
谢谢
尝试强制调用 Db。 我认为正在发生的是 Entity Framework 正在尝试编写您的 LINQ 查询,并且它不知道如何 map MyId,当我们真的希望它进行调用时,然后操作 ZCD69B4957F06CD8191ZBFED 中的对象。
var result = await _dbContext.MyEntities
.FromSql("Exec MyStoredProc")
.AsEnumerable() // <---- Try to force a call to the db.
.Select(s => new MyDTO {MyId = s.Id })
.ToListAsync()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.