麻烦与BreezeJS和实体框架6

时间:2013-05-17 07:36:24

标签: c# entity-framework breeze

Breeze EFContextProvider似乎正在尝试使用System.Data.Objects.ObjectContext,它显然已被移动(参见EF 6 System.Data.Objects.ObjectContext Error)。

任何人都知道如何解决这个问题?

这是我从元数据操作方法返回到浏览器的错误。

{
    * 
$id: "1",

    * 
$type: "System.Web.Http.HttpError, System.Web.Http",

    * 
Message: "An error has occurred.",

    * 
ExceptionMessage: "Method not found: 'System.Data.Objects.ObjectContext System.Data.Entity.Infrastructure.IObjectContextAdapter.get_ObjectContext()'.",

    * 
ExceptionType: "System.MissingMethodException",

    * 
StackTrace: " at Breeze.WebApi.EFContextProvider`1.GetCsdlFromDbContext(Object context) at Breeze.WebApi.EFContextProvider`1.BuildJsonMetadata() at Breeze.WebApi.ContextProvider.Metadata() at App.Spa.Controllers.BreezeController.Metadata() in ...filepath...\BreezeController.cs:line 23 at lambda_method(Closure , Object , Object[] ) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass13.<GetExecutor>b__c(Object instance, Object[] methodParameters) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.<>c__DisplayClass5.<ExecuteAsync>b__4() at System.Threading.Tasks.TaskHelpers.RunSynchronously[TResult](Func`1 func, CancellationToken cancellationToken)"


}

2 个答案:

答案 0 :(得分:2)

EF 6仍在Alpha中。我们可能不会尝试为Breeze提供支持,直到它至少制作Beta。但是您可以通过Git访问源代码,因此通过更改您提到的帖子的来源,这个特定问题应该很容易解决。

答案 1 :(得分:1)

这是我试过的:

  1. 从github下载breeze-master并解压缩,
  2. 使用Visual Studio 2012打开Breeze。*。sln,使用Nuget Manager Package更新EF6(删除旧EF,如果存在),
  3. 您将看到breeze-master源中引用的一些EF名称空间被加下划线作为引用错误,要更正它们,请按照

    中提到的更新名称空间说明进行操作

    http://entityframework.codeplex.com/wikipage?title=Updating%20Applications%20to%20use%20EF6

  4. 重建整个解决方案并创建新的Breeze.WebApi.dll

  5. 打开您的项目并添加对该Breeze.WebApi.dll

  6. 的引用