• Entity Framework如何得到数据库表的名字


    在Entity Framework中,有时我们想要得到真正的数据库表的名称,可以通过Metadata来得到。

    直接上代码:

    View Code
     1 static void Main(string[] args)
     2         {
     3             using (BreakAwayEntities context = new BreakAwayEntities())
     4             {
     5                 var metadata = context.MetadataWorkspace;
     6                 var tables = metadata.GetItemCollection(DataSpace.SSpace)
     7                     .GetItems<EntityContainer>().Single().BaseEntitySets.OfType<EntitySet>()
     8                     .Where(s => !s.MetadataProperties.Contains("Type")
     9                         || s.MetadataProperties["Type"].ToString() == "Tables");
    10 
    11                 foreach (var table in tables)
    12                 {
    13                     var tableName = table.MetadataProperties.Contains("Table") && table.MetadataProperties["Table"].Value != null
    14                       ? table.MetadataProperties["Table"].Value.ToString()
    15                       : table.Name;
    16 
    17                     var tableSchema = table.MetadataProperties["Schema"].Value.ToString();
    18 
    19                     Console.WriteLine(tableSchema + "." + tableName);
    20                 }
    21                 Console.Read();
    22                
    23             }
    24         }
    25     }

    首先我们要得到要得到该context的metadata信息,

    View Code
    1 var metadata = context.MetadataWorkspace;

    然后我们要得到SSDL部分类型为EntitySet的那部分信息,

    View Code
    1 metadata.GetItemCollection(DataSpace.SSpace)
    2                     .GetItems<EntityContainer>().Single().BaseEntitySets.OfType<EntitySet>()

    我们来看一下这部分信息的组成:

    EntitySet部分包含了数据库中表的信息和视图的信息,在这里我们只需要数据库表的信息,所以要做一下过滤:

    View Code
    1 .Where(s => !s.MetadataProperties.Contains("Type")
    2                         || s.MetadataProperties["Type"].ToString() == "Tables");

    该方法同样适用于DBContext,只需将

    View Code
    1 var metadata = context.MetadataWorkspace;

    改为

    View Code
  • 相关阅读:
    SCILAB简介[z]
    UG OPEN API编程基础 2约定及编程初步
    Office 2003与Office 2010不能共存的解决方案
    UG OPEN API 编程基础 3用户界面接口
    NewtonRaphson method
    UG OPEN API编程基础 13MenuScript应用
    UG OPEN API编程基础 14API、UIStyler及MenuScript联合开发
    UG OPEN API编程基础 4部件文件的相关操作
    UG OPEN API编程基础 1概述
    16 UG Open的MFC应用
  • 原文地址:https://www.cnblogs.com/douqiumiao/p/2475378.html
Copyright © 2020-2023  润新知