Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EntityCommandCompliationException与Include方法_C#_Entity Framework - Fatal编程技术网

C# EntityCommandCompliationException与Include方法

C# EntityCommandCompliationException与Include方法,c#,entity-framework,C#,Entity Framework,我的数据库中有4个表: 表1 ID1表1 表2 idTable2 #ID1表1 表3 idTable3 #ID2表2 表4 idTable4 #ID2表2 当我使用以下指令时,我有一个EntityCommandCompliationException: dbcontext.table1.Include("table2.table3").Include("table2.table4").Where(x => x.idTable1 == 1).FirstOrDefault(); 使用lamb

我的数据库中有4个表:

表1
ID1表1

表2
idTable2
#ID1表1

表3
idTable3
#ID2表2

表4
idTable4
#ID2表2

当我使用以下指令时,我有一个EntityCommandCompliationException:

dbcontext.table1.Include("table2.table3").Include("table2.table4").Where(x => x.idTable1 == 1).FirstOrDefault();
使用lambda表达式具有相同的结果:

dbcontext.table1.Include(x => x.table2.Select(y => y.table3)).Include(x => x.table2.Select(y => y.table4)).Where(x => x.idTable1 == 1).FirstOrDefault();
我只尝试了“Include”(“table2.table3”)”然后只尝试了“Include”(“table2.table4”)”,它工作得非常好

我是entityframework的初学者,我没有更多的想法来解决这个问题,希望你能帮助我

问候

编辑:

异常消息:“准备命令定义时出错。有关详细信息,请参阅内部异常。”

InnerException:“不支持指定的方法”,有时仅为“null”

堆栈跟踪:

   at System.Data.EntityClient.EntityCommandDefinition..ctor(DbProviderFactory storeProviderFactory, DbCommandTree commandTree)
   at System.Data.EntityClient.EntityProviderServices.CreateCommandDefinition(DbProviderFactory storeProviderFactory, DbCommandTree commandTree)
   at System.Data.EntityClient.EntityProviderServices.CreateDbCommandDefinition(DbProviderManifest providerManifest, DbCommandTree commandTree)
   at System.Data.Common.DbProviderServices.CreateCommandDefinition(DbCommandTree commandTree)
   at System.Data.Objects.Internal.ObjectQueryExecutionPlan.Prepare(ObjectContext context, DbQueryCommandTree tree, Type elementType, MergeOption mergeOption, Span span, ReadOnlyCollection`1 compiledQueryParameters, AliasGenerator aliasGenerator)
   at System.Data.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable`1 forMergeOption)
   at System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
   at System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
   at System.Data.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__1[TResult](IEnumerable`1 sequence)
   at System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable`1 query, Expression queryRoot)
   at System.Data.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[S](Expression expression)
   at System.Data.Entity.Internal.Linq.DbQueryProvider.Execute[TResult](Expression expression)
   at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable`1 source)
   at MyProjectServer_BLL.Implementation_EF.Table1_EF._getTable1(Int32 idTable1) dans c:\MyProject\MyProjectServer_BLL\Implementation_EF\Table1_EF.cs:ligne 43
   at MyProjectServer_BLL.Base.Table1_Base.getTable1(Int32 idTable1) dans c:\MyProject\MyProjectServer_BLL\Base\Table1_Base.cs:ligne 45
   at MyProject_ConsoleServer.Program.Main(String[] args) dans c:\MyProject\MyProject_ConsoleServer\Program.cs:ligne 62
   at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()
位于System.Data.EntityClient.EntityCommandDefinition..ctor(DbProviderFactory存储ProviderFactory,DbCommandTree命令树)
位于System.Data.EntityClient.EntityProviderServices.CreateCommandDefinition(DbProviderFactory storeProviderFactory,DbCommandTree commandTree)
位于System.Data.EntityClient.EntityProviderServices.CreateDbCommandDefinition(DbProviderManifest providerManifest,DbCommandTree commandTree)
位于System.Data.Common.DbProviderServices.CreateCommandDefinition(DbCommandTree commandTree)
在System.Data.Objects.Internal.ObjectQueryExecutionPlan.Prepare(ObjectContext上下文,DbQueryCommandTree树,类型elementType,MergeOption MergeOption,Span Span Span,ReadOnlyCollection`1 compiledQueryParameters,别名生成器AliasGenerator)
位于System.Data.Objects.elink.elinkQueryState.GetExecutionPlan(可为null `1 forMergeOption)
位于System.Data.Objects.ObjectQuery`1.GetResults(可为null`1 forMergeOption)
位于System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable.GetEnumerator()
位于System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1源)
在System.Data.Objects.Elink.ObjectQueryProvider.b__1[TResult](IEnumerable`1序列)
在System.Data.Objects.Elink.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable`1查询,表达式queryRoot)
位于System.Data.Objects.Elink.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[S](表达式)
在System.Data.Entity.Internal.Linq.DbQueryProvider.Execute[TResult](表达式)处
位于System.Linq.Queryable.FirstOrDefault[TSource](IQueryable`1源)
在MyProjectServer\u BLL.Implementation\u EF.Table1\u getTable1(Int32 idTable1)dans c:\MyProject\MyProjectServer\u BLL\Implementation\u EF\Table1\u EF.cs:ligne 43
在MyProjectServer\u BLL.Base.Table1\u Base.getTable1(Int32 idTable1)中的c:\MyProject\MyProjectServer\u BLL\Base\Table1\u Base.cs:ligne 45
在MyProject\u ConsoleServer.Program.Main(字符串[]args)dans c:\MyProject\MyProject\u ConsoleServer\Program.cs:ligne 62
位于System.AppDomain.\u nExecuteAssembly(RuntimeAssembly程序集,字符串[]args)
位于System.AppDomain.ExecuteAssembly(字符串汇编文件、证据汇编安全性、字符串[]args)
在Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()上
位于System.Threading.ThreadHelper.ThreadStart\u上下文(对象状态)
位于System.Threading.ExecutionContext.RunInternal(ExecutionContext ExecutionContext、ContextCallback回调、对象状态、布尔值preserveSyncCtx)
在System.Threading.ExecutionContext.Run(ExecutionContext ExecutionContext,ContextCallback回调,对象状态,布尔保存SyncCTX)
在System.Threading.ExecutionContext.Run(ExecutionContext ExecutionContext,ContextCallback回调,对象状态)
位于System.Threading.ThreadHelper.ThreadStart()处

无需在表1中给出
包括

但当您使用另一个表时,就需要它了。比如说

dbcontext.table2.Include("table1").Where(x => x.idTable2 == 1).FirstOrDefault();

实际上,一对多关系中需要包含

什么是异常消息(和堆栈跟踪)?我已经更新了我的第一篇文章。谢谢您的关注。我对表1的要求仅包括“表2.表3”和“表2.表4”,而不是“表1”。表2.表3中有两个表还是一个表?