GSH*_*GSH 3 stored-procedures entity-framework-core
我正在使用EF Core(代码优先),并希望从存储过程中获取数据.返回的结果应该是我根据结果返回定义的类.
如果返回类型是实体之一,我可以使它工作.恩.
_context.Set<Entity>().FromSql("dbo.Stored_Proc").ToList();
Run Code Online (Sandbox Code Playgroud)
但如果我的返回值不是上下文中的实体,则不会.
任何帮助,将不胜感激.
小智 6
这很容易.
这有3个步骤:
public class SPModel { public int Id {get;set;} public DateTime? CreatedDateTime {get;set;} etc.. }
public class YourDbContext: DbContext { public virtual DbSet<SPModel> YourDbSet { get; set; } .... }
不要将此类映射到任何sql表
var collection = await dbContext.YourDbSet.FromSql("EXECUTE yourStoredProcedure {0},{1}", param1, param2).ToListAsync();
一些有用的东西:
- 您可以使用try/catch块来查看是否遗漏了一些属性
- 您可以扩展模型类以添加新属性,但避免使用"set"访问器:public bool IsLoaded {get;}
- 小心如果你的SP返回一些可以为空的类型,在这种情况下,模型也必须具有可空类型