4

参考までに、この未回答の質問をご覧ください。まったく同じエラーがあります。間違って Code-First を使用することとは関係ありません。2 つの EDMX ファイル (1 つは単純な古い CodeGen、もう 1 つは dBContext T4 コード生成)、2 つの異なる名前空間、異なる接続文字列などです。データにアクセスしようとすると、DBContext モデルがエラーをスローします。

そのため、(dbContext T4 テンプレートで生成されたオブジェクト) にアクセスするNameSpace.Models.MyEntities.ObjectSetと、次のエラーが発生します。

のコンセプト モデル タイプが見つかりませんでした AnotherNameSpace.Models.MyObjectClass

どこAnotherNameSpace.Models.MyObjectClassで、別のフォルダー/名前空間にある完全に異なる EDMX を参照します。t4で生成されたファイルなどのどこにも参照がまったく見つかりませんAnotherNameSpace.Models.MyObjectClass。これらのEDMXファイルは互いにコピーされていません。文字通り、EDMX ファイルの唯一の共通点は、最終的に同じデータベースを指していることです (ただし、接続文字列を共有していません)。

上記の ObjectSet にアクセスしようとすると、次のように分類されるエラーがスローされます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)
4

1 に答える 1

0

ソリューションは、2 つの EDMX で 2 つの別個のアセンブリですが、維持するのが非常に困難です。詳細は次のとおりです。 レガシー コード用の EDMX _and_ 新しい開発用の Code First を 1 つの MVC プロジェクトにまとめる

于 2013-05-30T19:44:55.420 に答える