Entity framework 4 如何区分EF MetadataWorkspace中的视图和表?

Entity framework 4 如何区分EF MetadataWorkspace中的视图和表?,entity-framework-4,Entity Framework 4,我试图使用MetadataWorkspace处理实体框架数据模型的元数据信息。我知道如何提取所有表,但下面的代码将返回存储模型中的所有视图和所有表 using ( NorthwindEntities dbContext = new NorthwindEntities() ) { MetadataWorkspace workspace = dbContext.MetadataWorkspace; string temp = ( dbContext.Categories as Obj

我试图使用MetadataWorkspace处理实体框架数据模型的元数据信息。我知道如何提取所有表,但下面的代码将返回存储模型中的所有视图和所有表

using ( NorthwindEntities dbContext = new NorthwindEntities() )
{
    MetadataWorkspace workspace = dbContext.MetadataWorkspace;
    string temp = ( dbContext.Categories as ObjectQuery ).ToTraceString();
    IEnumerable<EntityType> tables = workspace.GetItems<EntityType>( DataSpace.SSpace );
}
使用(NorthwindEntities dbContext=new NorthwindEntities())
{
MetadataWorkspace=dbContext.MetadataWorkspace;
字符串temp=(dbContext.Categories作为ObjectQuery).ToTraceString();
IEnumerable tables=workspace.GetItems(DataSpace.SSpace);
}
当我查看edmx文件时,可以看到一个名为store:Type的属性,它描述了哪个EntitySet是表,哪个是视图。EntityType对象未发现此类属性:

<EntitySet Name="Invoices" EntityType="NorthwindModel.Store.Invoices" store:Type="Views">

所以我的问题是:有没有一种方法可以通过只使用MetadataWorkspace(我的意思是不处理XML;)来识别哪个EntitySet是表,哪个是视图


提前感谢

在深入挖掘EF MetadataWorkspace后,我相信我找到了一个解决方案:

using ( AdventureWorksEntities dbContext = new AdventureWorksEntities() )
{
    MetadataWorkspace mw = dbContext.MetadataWorkspace;
    dbContext.Locations.ToTraceString();
    EntityContainer entityContainer = mw.GetItems<EntityContainer>( DataSpace.SSpace ).Single();
    EntitySet entitySet = entityContainer.GetEntitySetByName( "Location", true );
    string type = entitySet.MetadataProperties[ "http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator:Type" ].Value.ToString();
}
使用(AdventureWorksEntities dbContext=new AdventureWorksEntities())
{
MetadataWorkspace mw=dbContext.MetadataWorkspace;
dbContext.Locations.ToTraceString();
EntityContainer EntityContainer=mw.GetItems(DataSpace.SSpace).Single();
EntitySet-EntitySet=entityContainer.GetEntitySetByName(“位置”,true);
字符串类型=entitySet.MetadataProperties[“http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator:Type“].Value.ToString();
}
老实说,使用实体框架元数据确实很困难。至少它们应该具有强类型属性