我需要能够迭代EF模型中的EntityObjects列表。
例如..
foreach (System.Data.Objects.DataClasses.EntityObject eObject in ????)
{
}
从我所看到的模型上下文中没有这样的公共枚举器。
有人做过这个吗?
答案 0 :(得分:3)
这里的问题是我需要一种动态的方法来迭代EntityObjects,它们也是EDMX中的类型。我需要列出实体名称及其属性。非常感谢Craig Stuntz带领我走上正确的道路来解决这个问题。这是我提出的解决问题的最终代码。
EmployeesEntities context = new EmployeesEntities();
MetadataWorkspace workspace = context.MetadataWorkspace;
workspace.LoadFromAssembly(Assembly.Load(@"WindowsFormsApplication10"));
ItemCollection itemCol = workspace.GetItemCollection(DataSpace.OSpace);
StringBuilder sb = new StringBuilder();
foreach (EdmType eType in itemCol)
{
if (eType.GetType().BaseType == typeof(System.Data.Metadata.Edm.EntityType))
{
sb.Append(string.Format("Entity: {0} ", eType.Name));
foreach (EdmProperty prop in
((System.Data.Metadata.Edm.EntityType)(eType)).Properties)
{
sb.Append(string.Format("Property: {0} ", prop.Name));
}
}
}
MessageBox.Show(sb.ToString());
答案 1 :(得分:1)
从您的评论中,我认为,尽管您的问题中有代码,但您要求CSDL中的实体类型列表而不是对象列表。 There's a demo of that here