实体框架4 +自跟踪实体+ ASP.NET动态数据=错误 [英] Entity Framework 4 + Self-Tracking Entities + ASP.NET Dynamic Data = Error

查看:232
本文介绍了实体框架4 +自跟踪实体+ ASP.NET动态数据=错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用EF4(VS2010 RC)的自跟踪实体codeGEN选项,我试图使用动态数据来建立一个快速和肮脏的网站编辑。实体,数据上下文,并EDMX文件都在单独的程序集,而这种模式效果很好,当我打电话一切都在code。但是,当我尝试使用它与动态数据,马上我得到了整个洛塔蝙蝠失败:

I'm using the Self-Tracking Entities codegen option in EF4 (VS2010 RC), and I'm trying to use Dynamic Data to build a quick-and-dirty website for editing. The Entities, Data Context, and EDMX files are all in separate assemblies, and this model works well when I call everything in code. But when I try to use it with Dynamic Data, right off the bat I get a whole lotta FAIL:

找不到CLR类型'Core.Recording。 在System.Data.Metadata.Edm.MetadataWorkspace.GetObjectSpaceType(StructuralType edmSpaceType)    在System.Web.DynamicData.ModelProviders.EFDataModelProvider.GetClrType(的EntityType的EntityType)    在System.Web.DynamicData.ModelProviders.EFDataModelProvider.CreateTableProvider(的EntitySet EntitySet的,的EntityType的EntityType)    在System.Web.DynamicData.ModelProviders.EFDataModelProvider..ctor(对象contextInstance,Func键 1 contextFactory)    在System.Web.DynamicData.ModelProviders.SchemaCreator.CreateDataModel(对象contextInstance,Func键 1 contextFactory)    在System.Web.DynamicData.MetaModel.RegisterContext(Func`1 contextFactory,ContextConfiguration配置)    在SimpleAdmin.Global.RegisterRoutes(RouteCollection路由)在D:\ SimpleAdmin \的Global.asax.cs:行32    在SimpleAdmin.Global.Application_Start(对象发件人,EventArgs e)在D:\ SimpleAdmin \的Global.asax.cs:61行

Could not find the CLR type for 'Core.Recording'. at System.Data.Metadata.Edm.MetadataWorkspace.GetObjectSpaceType(StructuralType edmSpaceType) at System.Web.DynamicData.ModelProviders.EFDataModelProvider.GetClrType(EntityType entityType) at System.Web.DynamicData.ModelProviders.EFDataModelProvider.CreateTableProvider(EntitySet entitySet, EntityType entityType) at System.Web.DynamicData.ModelProviders.EFDataModelProvider..ctor(Object contextInstance, Func1 contextFactory) at System.Web.DynamicData.ModelProviders.SchemaCreator.CreateDataModel(Object contextInstance, Func1 contextFactory) at System.Web.DynamicData.MetaModel.RegisterContext(Func`1 contextFactory, ContextConfiguration configuration) at SimpleAdmin.Global.RegisterRoutes(RouteCollection routes) in D:\SimpleAdmin\Global.asax.cs:line 32 at SimpleAdmin.Global.Application_Start(Object sender, EventArgs e) in D:\SimpleAdmin\Global.asax.cs:line 61

的RegisterRoutes看起来是这样的:

RegisterRoutes looks like this:

DefaultModel.RegisterContext((() =>  new DataContext.Entities()), new ContextConfiguration() { ScaffoldAllTables = true });

在语境中的默认构造函数已被修改为用我的我的连接字符串,它看起来像这样:

The default constructor on the Context has been modified to use my my connection string, which looks like this:

<add name="Entities" connectionString="metadata=res://*/Entities.csdl|res://*/Entities.ssdl|res://*/Entities.msl;provider=System.Data.SqlClient;provider connection string="Data Source=xxxxxxxxxx;Initial Catalog=MyDB;Persist Security Info=True;User ID=xxxx;Password=xxxxxxx;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient"/> 

我想我没有引用O,C,或CS空格正确的连接字符串中......然而,如果我打电话的背景下在code和使用它工作得很好。所以我在做什么错了?

I imagine I'm not referencing the O, C, or CS spaces correctly in the connection string... yet it works just fine if I call the context up in code and use it. So what am I doing wrong?

谢谢!

推荐答案

其实,我找到了一个可行的解决方案。它源于这个帖子:<一href="http://thedatafarm.com/blog/data-access/wcf-data-services-and-ef-pocos-that-are-in-their-own-assembly/" rel="nofollow">http://thedatafarm.com/blog/data-access/wcf-data-services-and-ef-pocos-that-are-in-their-own-assembly/

Actually, I found a workable solution. It stems from this post: http://thedatafarm.com/blog/data-access/wcf-data-services-and-ef-pocos-that-are-in-their-own-assembly/

由于我只使用动态数据网站快速和肮脏的管理,而不是作为一个面向客户的生产现场,我不关心的情况下推出的PERF的问题。所以我增加了一个构造函数,只有DynamicData将使用:

Since I'm only using the Dynamic Data site for quick-and-dirty admin, and not as a customer-facing production site, I'm not concerned about the perf issues introduced in the scenario. So I added a constructor that only DynamicData would use:

public Entities(bool dynamicData)
    : base(ConfigurationManager.ConnectionStrings["Entities"].ConnectionString, ContainerName)
{
    Initialize();
    var tracestring = this.CreateQuery<Address>("Entities.Addresses").ToTraceString(); 
}

那么,在的Global.asax.cs的RegisterRoutes功能,我现在有这样的:

then, in Global.asax.cs' RegisterRoutes function, I now have this:

DefaultModel.RegisterContext((() =>  new DataContext.Entities(true)), new ContextConfiguration() { ScaffoldAllTables = true });

工作的指示。还挺刺激,。但每一个平台都必须有MODS的不玩好起来,对吧?

Works as directed. Kinda irritating,. but every platform has to have mods that don't play nice together, right?

HTH。

这篇关于实体框架4 +自跟踪实体+ ASP.NET动态数据=错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆