如何获取映射到特定实体属性的TableName

本文关键字:实体 属性 TableName 映射 何获取 获取 | 更新日期: 2023-09-27 18:16:36

实体属性可以跨不同的表拆分,这意味着单个实体可以将其列映射到不同的表。那么,如何在代码中检索实体属性映射到的特定表上的信息呢?

foreach(PropertyInfo pi in typeof(DbContext).GetProperties())
            {
                if(pi.PropertyType.IsGenericType && pi.PropertyType.Name.Contains("DbSet"))
                {
                    var t = pi.PropertyType.GetGenericArguments().FirstOrDefault();
                    var tables = t.GetCustomAttributes(true).OfType<TableAttribute>();
                    foreach (var entityProperty in t.GetProperties())
                    {
                        if (entityProperty.GetCustomAttributes(true).OfType<RequiredAttribute>().Any<RequiredAttribute>())
                        {
                            var fieldname = entity.Name;
                             //I need to match this column with the table it belongs to here
                        }
                    }
                }
            }
到目前为止,我有下面的代码来获得实体属性,从对象本身,我如何确定当前属性映射到的特定表,在我的数据库中?提前感谢。

如何获取映射到特定实体属性的TableName

考虑使用OR/M来生成实际需要的SQL。

var dbContext = new DbContext();
var objectContext = ((IObjectContextAdapter)dbContext).ObjectContext;
var set = objectContext.Set<Foo>();
var query = from x in set
            where {stuff}
            select new { x.Bar, x.Baz ...};
var objectQuery = (ObjectQuery)query;
var command = objectQuery.CommandText;
var parameters = objectQuery.Parameters;