Entity Framework 用反射获取表名及列名

    Entity Framework 可以将类映射为数据库中的表。

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Reflection;

namespace Xbim.IO.PostGre
{
    [Table("Entities")]
    public class EntityDef
    {
        [Key]
        [Column("Label")]
        public Int64 Label { get; set; }
        [Column("Type")]
        public Int32 Type { get; set; }
        [Column("IsNew")]
        public bool IsNew { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            EntityDef table = new EntityDef();
            HashSet columName = new HashSet();
            Type type = table.GetType();
            TableAttribute temp = (TableAttribute)type.GetCustomAttributes(typeof(TableAttribute), false).First();
            Console.WriteLine("TableName: " + temp.Name);
        
            PropertyInfo[] Propertys = type.GetProperties();
            foreach (var item in Propertys)
            {
                object[] attributes = item.GetCustomAttributes(false);
                foreach (var item1 in attributes)
                {                
                    ColumnAttribute colum = item1 as ColumnAttribute;                
                    if (colum != null)
                    {
                        columName.Add(colum.Name);
                    }
                }
            }

            Console.Write("TableColumName: ");
            foreach (var item in columName)
            {
                Console.Write(item + " ");
            }
            Console.ReadLine();
        } 
    }
}

运行结果

Entity Framework 用反射获取表名及列名_第1张图片


你可能感兴趣的:(PostgreSQL)