我必须在实体框架之上更新基于DDS的现有站点,并且它使用来自三个不同数据库的三个不同数据库模型。它需要的是ListDetails页面的简单添加:导出到XML按钮...
添加按钮很容易。创建XML也不困难。面临的挑战是获取适当的表来导出,遍历所有记录和字段,并根据系统中100多个表中的任何一个生成XML!
所以,我的按钮调用一个导出(ashx)处理程序,该处理程序根据通过其参数接收的名称来生成XML。我的代码是这样的:从动态数据站点导出到XML
Content_CobaEntities Coba = new Content_CobaEntities();
MetadataWorkspace metadataWorkspace = Coba.MetadataWorkspace;
EntityContainer container = metadataWorkspace.GetItems<EntityContainer>(DataSpace.CSpace).First();
string namespaceName = metadataWorkspace.GetItems<EntityType>(DataSpace.CSpace).First().NamespaceName;
EntitySetBase entitySetBase = container.BaseEntitySets.FirstOrDefault(set => set.ElementType.Name == Entity);
不幸的是,这只适用于一个上下文,我碰巧有三个。 (但是这是主要的上下文。)(另外,可以使用第二个参数来确定正确的上下文。)虽然它允许我确定需要的实体类型,但它仍然不会让我访问它的记录和田野。
那么,如何获得这个实体的数据? (过滤器不重要;导出将返回所有数据。)
而且不,不是EF4。没有.NET 4。这是一个较旧的VS2008的项目,不能修改太多,也不能升级...
基本上,查询字符串包含两个参数:关联标识符和QueryID。 ContextID告诉我要使用哪个上下文,因为我只有三种不同的上下文,所以简单的switch-command为我解决了这个问题。 但其中一个上下文包含60多个查询,每个查询都与单个数据库表相关。动态数据站点为我提供了添加,编辑和删除该表中的记录的选项,但它需要以我的定制代码指定的格式导出。但是对于60个表格,为每个查询编写switch语句太多了,所以我需要更通用的东西。
你是说你不能连接到主环境以外的另一个EF环境? – WVDominick
实际上,导出处理程序也必须从其他位置可用,并且用户需要能够为其添加书签。我可以得到正确的上下文,但现在我需要循环正确的查询,并使用所有字段和值来生成自定义XML。 –