实体框架:Linq to Json - 检索集合的集合

时间:2012-12-04 20:04:36

标签: json linq entity-framework-4

我有3个实体: 1.数据库 2.表中哪个数据库有一个集合 3.哪些表具有

集合的列

延迟加载启用= false

如何返回包含每个数据库的json字符串,其中包含各自的表数组,每个表都包含各自列的数组?

更新

我已经能够返回以下Json脚本,代价是禁用某些类的实例:

enter image description here

这是我要找的回报。但是,我不得不将列与表的关系,以及表中的表与各个类的数据库排成一行,我不想这样做。

我首先尝试对外国类进行[ScriptIgnore]注释,但这不起作用

1 个答案:

答案 0 :(得分:1)

通过澄清这些是自定义创建的对象,我相信您正在寻找使用反射。具体来说,从调用Object.GetType()返回的PropertyInfo类将为您提供所需的内容。如果你有一个包含表子对象和列孙对象的数据库对象的对象图,你应该遍历图形,在每个对象上调用GetType()以获取有关名称和类型的信息(如果需要)。

反思并不快速和高效,但它应该得到你需要的东西。

如果您引用的对象来自数据库技术:

看看Context.MetaDataWorkspace。具体来看.GetItems()。 Here是一个很好的示例/演示,向您展示如何执行此操作。查看“EntityTypes”和“EntityTypes and Properties”部分。

摘录代码:

var query = from meta in context.MetadataWorkspace.GetItems(DataSpace.CSpace)
        where meta.BuiltInTypeKind == BuiltInTypeKind.EntityType
        select (meta as EntityType).Name;

这将为您提供表和列的列表。您将无法从实体上下文获取给定SQL服务器上的数据库列表,该上下文仅知道添加到其中的项目,并且您不将数据库添加到上下文。

我也注意到你要求你能用JSON返回它;使用上面的结果集,您应该能够遍历并手动构建JSON或构造一个可序列化为JSON的对象。