【问题标题】:How to distinguish Views from Tables in the EF MetadataWorkspace?如何区分 EF MetadataWorkspace 中的视图和表?
【发布时间】:2010-12-10 21:41:56
【问题描述】:

我正在尝试使用 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 );
}

当我查看 edmx 文件时,我可以看到有一个名为 store:Type 的属性,它描述了哪个 EntitySet 是一个表,哪个是看法。 EntityType 对象不支持此类属性:

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

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

提前致谢

【问题讨论】:

    标签: entity-framework-4


    【解决方案1】:

    在深入研究 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();
    }
    

    老实说,使用实体框架元数据真的很困难。至少他们应该做强类型属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-13
      • 2012-07-01
      • 1970-01-01
      • 2021-11-03
      • 1970-01-01
      • 1970-01-01
      • 2011-08-26
      • 1970-01-01
      相关资源
      最近更新 更多