我有 3 个实体:1. 一个数据库 2. 哪个数据库有一个集合的表 3. 哪个表有一个集合的列
启用延迟加载时 = false
如何返回一个包含每个数据库的 json 字符串,以及一个包含相应表的数组,每个表都有一个包含相应列的数组?
更新:
我已经能够返回以下 Json 脚本,但代价是禁用某些类的实例:
这就是我正在寻找的回报。但是,我必须在各个类中列出列与表的关系,以及表与数据库的关系,我不想这样做。
我确实首先尝试了对外部类的 [ScriptIgnore] 注释,但这没有用
我有 3 个实体:1. 一个数据库 2. 哪个数据库有一个集合的表 3. 哪个表有一个集合的列
启用延迟加载时 = false
如何返回一个包含每个数据库的 json 字符串,以及一个包含相应表的数组,每个表都有一个包含相应列的数组?
更新:
我已经能够返回以下 Json 脚本,但代价是禁用某些类的实例:
这就是我正在寻找的回报。但是,我必须在各个类中列出列与表的关系,以及表与数据库的关系,我不想这样做。
我确实首先尝试了对外部类的 [ScriptIgnore] 注释,但这没有用
澄清这些是自定义创建的对象,我相信您正在寻找使用反射。具体来说,调用 Object.GetType() 返回的PropertyInfo类将为您提供所需的内容。如果您有一个包含表子对象和列孙对象的数据库对象的对象图,您应该遍历该图,在每个对象上调用 GetType() 以获取有关名称和类型的信息(如果需要)。
反射不是快速和高效的,但它应该得到你需要的东西。
如果您引用的对象来自数据库技术:
查看Context.MetaDataWorkspace。具体看.GetItems()。 这是一个很好的示例/演示,向您展示如何做到这一点。查看“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 的对象。