Fel*_*tor 3 c# entity-framework oracle11g entity-framework-6 entity-framework-core
我正在努力将我们的模型转移到 EF Core,但我无法找到调用以下代码的方法:
InitializeTime = context.ExecuteSqlCommand<DateTime>("SELECT CURRENT_TIMESTAMP FROM DUAL").FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
我们使用数据库时间来同步所有内容,但据我所知,在 DbSet 之外调用原始 sql 不可用,并且返回类型仅限于类型DbSet参数。
我环顾四周,发现有一些DbQuery对象(文章),但这似乎只是为了获取当前系统日期时间而进行的繁重工作。
还有其他人遇到过这个问题并找到了更简单的解决方案吗?
注意:这是一个桌面应用程序,因此代码将在客户端运行,并且系统日期时间不可靠。
EFCore 同名context.Database.ExecuteSqlRaw(sql)/ context.Database.ExecuteSqlRInterpolated(sql)(或者context.Database.ExecuteSqlCommand(sql)在 EFCore 3 之前,您没有指定您正在使用的版本)只能返回int,即执行 sql 语句影响的行数。
context.Query<TQuery>()据我所知,如果您想使用 EFCore 执行查询,您可以选择(直到 EFCore 3,从 EFCore 3 开始已弃用)或由普通 POCO 支持的无密钥实体(EFCore 3 开始)。
无密钥实体类型doco:
使用场景
无密钥实体类型的一些主要使用场景是:
用作原始 SQL 查询的返回类型。
就开销而言,当您考虑 EFCore 实现的工作单元/存储库模式时,实际上并不是这样。它本质上迫使您实现一个存储库,而不是在该地方进行临时查询。
| 归档时间: |
|
| 查看次数: |
3483 次 |
| 最近记录: |