我有3个实体: 1.数据库 2.表中哪个数据库有一个集合 3.哪些表具有
集合的列延迟加载启用= false
如何返回包含每个数据库的json字符串,其中包含各自的表数组,每个表都包含各自列的数组?
更新
我已经能够返回以下Json脚本,代价是禁用某些类的实例:
这是我要找的回报。但是,我不得不将列与表的关系,以及表中的表与各个类的数据库排成一行,我不想这样做。
我首先尝试对外国类进行[ScriptIgnore]注释,但这不起作用
答案 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的对象。