2013-06-04 68 views
0

實體屬性可以被拆分到不同的表中,這意味着一個實體可以將其列映射到不同的表。那麼如何在代碼中檢索實體屬性映射到的特定表上的信息。如何獲取TableName特定的實體屬性被映射到

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 
         } 
        } 
       } 
      } 

到目前爲止,我有下面的代碼來獲得在實體屬性,物體本身,我怎麼決定我的數據庫中特定表的當前屬性映射到,?提前致謝。

+0

您正在尋找這樣的:http://stackoverflow.com/a/9760774/1844389或本:http://stackoverflow.com/a/6463557/1844389或這樣的:HTTP://計算器。 com/a/7505974/1844389 –

+0

不是。我需要將實體中的每個列/字段與它所屬的表匹配,以便我可以針對特定字段的正確表執行查詢。 – Kobojunkie

+0

不是用於查詢數據庫的ORM嗎? – Aron

回答

0

考慮將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; 
相關問題