感谢您的光临。
我需要查询我的实体类以获取所有实体(表)的列表,并且对于每个实体/表,我需要所有外键列表(导航属性?)以及计数存储在该实体的相应数据表中的记录。
到目前为止,我已经找到了如何获取所有实体的列表,但我仍然坚持如何获取每个实体的外键和记录数。任何帮助表示赞赏。
到目前为止,这是我的代码:
public static void GetAllEntities(SomeEntityContext db)
{
int trick = db.Some_Table.Count(); //The code below won't work without running some initial call against the entity context. Not sure why.
//Get a list of entities / tables
IEnumerable<EntitySet> tables = db.MetadataWorkspace.GetItemCollection(DataSpace.SSpace)
.GetItems<EntityContainer>()
.Single()
.BaseEntitySets
.OfType<EntitySet>()
.Where(s => !s.MetadataProperties.Contains("Type")
|| s.MetadataProperties["Type"].ToString() == "Tables");
foreach (var table in tables)
{
var tableName = table.MetadataProperties.Contains("Table")
&& table.MetadataProperties["Table"].Value != null
? table.MetadataProperties["Table"].Value.ToString()
: table.Name;
//Print out some data
System.Diagnostics.Debug.WriteLine(tableName);
//ALSO NEED THE FOLLOWING:
//--Count of records in table
//--List of foreign keys for table
}
}
答案 0 :(得分:0)
尝试按如下方式创建DbContext扩展: 例如http://weblogs.asp.net/ricardoperes/entity-framework-metadata
这些方法应该允许您从TableNavigationColumns等确定FK。