entity-framework - EF Core Include 方法不起作用

标签 entity-framework linq asp.net-core devart

我最近更新到了 asp.net core 2.0。由于使用 Include Method 升级我的所有 Linq 查询都失败了,因此它没有正确转换为 SQL。

例如这个:

var entities = helpTopicRepository.Entities.Include(x => x.HelpArticles).FirstOrDefault(t => topicIds.Any(a => a == t.Id));

翻译成:
SELECT x.HelpArticles.ART_ID, 
x.HelpArticles.AVAILABLE, 
x.HelpArticles.CONTENT, 
x.HelpArticles.DISPLAYORDER, 
x.HelpArticles.HELPFULNO, 
x.HelpArticles.HELPFULYES, 
x.HelpArticles.KEYWORDS, 
x.HelpArticles.TITLE, 
x.HelpArticles.TOPICID
FROM HELPARTICLE x.HelpArticles 

这导致以下错误:

Devart.Data.Oracle.OracleException (0x80004005): ORA-00933: SQL

command not properly ended at Devart.Data.Oracle.ay.b() at Devart.Data.Oracle.am.f() at Devart.Data.Oracle.am.e() at Devart.Data.Oracle.c5.a(am A_0, Int32 A_1) at Devart.Data.Oracle.c5.a(Int32 A_0, bg A_1) at Devart.Data.Oracle.OracleCommand.InternalExecute(CommandBehavior behavior, IDisposable disposable, Int32 startRecord, Int32 maxRecords, Boolean nonQuery) at Devart.Common.DbCommandBase.ExecuteDbDataReader(CommandBehavior behavior, Boolean nonQuery) at Devart.Data.Oracle.Entity.ai.a(CommandBehavior A_0) at Devart.Common.Entity.cj.d(CommandBehavior A_0) at Devart.Data.Oracle.Entity.ai.b(CommandBehavior A_0) at System.Data.Common.DbCommand.ExecuteReader() at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Execute(IRelationalConnection connection, DbCommandMethod executeMethod, IReadOnlyDictionary2 parameterValues) at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteReader(IRelationalConnection connection, IReadOnlyDictionary2 parameterValues) at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable1.Enumerator.BufferlessMoveNext(Boolean buffer) at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable1.Enumerator.MoveNext() at Microsoft.EntityFrameworkCore.Query.Internal.QueryBuffer.IncludeCollection(Int32 includeId, INavigation navigation, INavigation inverseNavigation, IEntityType targetEntityType, IClrCollectionAccessor clrCollectionAccessor, IClrPropertySetter inverseClrPropertySetter, Boolean tracking, Object entity, Func1 relatedEntitiesFactory) at lambda_method(Closure , QueryContext , Client , Object[] ) at Microsoft.EntityFrameworkCore.Query.Internal.IncludeCompiler._Include[TEntity](QueryContext queryContext, TEntity entity, Object[] included, Action3 fixup) at lambda_method(Closure , Client ) at System.Linq.Enumerable.SelectEnumerableIterator2.MoveNext() at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable1 source) at lambda_method(Closure , QueryContext ) at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass17_0`1.b__0(QueryContext qc) ORA-00933: SQL command not properly ended



我正在使用 Devart dotconnect 连接到 Oracle 数据库。

最佳答案

是因为你的说法:

var entities = helpTopicRepository.Entities.Include(x => x.HelpArticles).FirstOrDefault(t => topicIds.Any(a => a == t.Id));

假设 topicIds是一个列表,这里有一个修复:
var entities = helpTopicRepository.Entities
    .Include(x => x.HelpArticles)
    .Where(t => topicIds.Contains(t.Id))
    .FirstOrDefault();

关于entity-framework - EF Core Include 方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47105670/

相关文章:

c# - 在 Visual Studio 中针对多个配置运行单个测试

c# - Visual Studio .net 核心标签助手不工作

entity-framework - 如何为测试目的创建 EF codefirst 类的分离克隆?

.net - 从 Entity Framework 迁移到 NHibernate

silverlight - 如何在 Silverlight 4 应用程序中禁用验证?

c# - 如何使用 LINQ 计算列表中的重复项

sql - EF5 使用名称中的点生成 SQL Server CE 约束

c# - 查询的通用实现 - 无法翻译 LINQ 表达式

linq - LINQ Lambda Join错误-无法从使用情况推断出

asp.net-core - 首次访问站点时 ASP.NET Core 高 TTFB(超过 5 秒)