2016-09-23 57 views
0

使用Entity Framework v4,我想在C#中为我的模型类创建一个通用的getter。我不知道这是否可能以及如何实施。EntityFramework模型的通用Getter

我面临的问题是如何将属性名称,LINQ查询

例如地图:

public static List<T> GetModelsByAttribute<T,R>(R attribute, string attributeName) 
    { 
     return new OracleTestConnection().T.Where(d => d.attributeName == att).ToList(); 
    } 

预先感谢您

回答

1

泛型定义类型,和你正在尝试将其用作属性。很可能你最好的选择就是尝试使用反思(没有其他方式可以考虑你可以通过名称获得财产)。

public static List<T> GetModelsByAttribute<T,R>(string propertyName, R attribute, string attributeName) where T : YourAttributeClass 
{ 
    var connection = new OracleTestConnection(); 
    var property = (List<T>)connection.GetType().GetProperty(propertyName).GetValue(connection, null); 
    return property.Where(d => d.attributeName == att).ToList(); // assuming your class YourAttributeClass has attributeName property 
} 

在这种情况下,你会传递一个属性名称,以及假设该特性选自YourAttributeClass衍生,可以在LINQ引用其的属性。