作为参考,请参阅这个未回答的问题。我有完全相同的错误。它与错误地使用 Code-First 无关。两个 EDMX 文件(一个使用普通的旧 CodeGen,另一个使用 dBContext T4 代码生成)、两个不同的命名空间、不同的连接字符串等。你明白了。尝试访问数据时,DBContext 模型会引发错误。
因此,在访问NameSpace.Models.MyEntities.ObjectSet
(dbContext T4 模板生成的对象)时,我收到以下错误:
找不到 的概念模型类型
AnotherNameSpace.Models.MyObjectClass
。
whereAnotherNameSpace.Models.MyObjectClass
指的是不同文件夹/命名空间中完全不同的 EDMX。我在任何 t4 生成的文件等中都找不到任何引用AnotherNameSpace.Models.MyObjectClass
。这些 EDMX 文件不是相互复制的。从字面上看,EDMX 文件的唯一共同点是它们最终指向同一个数据库(尽管它们不共享连接字符串)。
当尝试访问上面的 ObjectSet 时,它会抛出分类为 a 的错误System.ArgumentException
:
at System.Data.Metadata.Edm.MetadataWorkspace.GetEdmSpaceType[T](T objectSpaceType)
at System.Data.Entity.Internal.InternalContext.UpdateEntitySetMappings()
at System.Data.Entity.Internal.InternalContext.TryUpdateEntitySetMappingsForType(Type entityType)
at System.Data.Entity.Internal.InternalContext.UpdateEntitySetMappingsForType(Type entityType)
at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()
at System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider()
at System.Linq.Queryable.Where[TSource](IQueryable`1 source, Expression`1 predicate)
at GratisWeb.Areas.App.Controllers.WorkplanController.Index() in B:\eGrATIS\Code\src\GratisWeb\Areas\App\Controllers\WorkplanController.cs:line 30
at lambda_method(Closure , ControllerBase , Object[] )
at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12()
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)