Entity framework 实体框架中的自动投影
在实体框架中是否有创建自动投影的方法?请参见:Entity framework 实体框架中的自动投影,entity-framework,c#-4.0,reflection,extension-methods,projection,Entity Framework,C# 4.0,Reflection,Extension Methods,Projection,在实体框架中是否有创建自动投影的方法?请参见: public class Person{ public int Id {get; set;} public string FirstName {get; set;} public string LastName {get; set;} public string FatherName {get; set;} public string City {get; set;} public str
public class Person{
public int Id {get; set;}
public string FirstName {get; set;}
public string LastName {get; set;}
public string FatherName {get; set;}
public string City {get; set;}
public string AddressLine {get; set;}
public string Something {get; set;}
}
public class PersonNameModel{
public string FirstName {get; set;}
public string LastName {get; set;}
public string FatherName {get; set;}
}
public class PersonAddressModel{
public string City {get; set;}
public string AddressLine {get; set;}
}
// etc...
我的意思是我可以替换正常投影,比如:
context.Persons.Select(t => new PersonNameModel{ FirstName = t.FirstName /* etc */ });
public static class MyExtensions{
public static IQueryable<T> AutoSelect<T, TProject>(this IQueryable<T> q){
// read TProject type in reflection
// create a projection as a IQueryable<T>
}
}
使用可使用反射并创建自动投影的扩展方法,如:
context.Persons.Select(t => new PersonNameModel{ FirstName = t.FirstName /* etc */ });
public static class MyExtensions{
public static IQueryable<T> AutoSelect<T, TProject>(this IQueryable<T> q){
// read TProject type in reflection
// create a projection as a IQueryable<T>
}
}
公共静态类MyExtensions{
公共静态IQueryable自动选择(此IQueryable q){
//读取反射中的项目类型
//将投影创建为IQueryable
}
}
有办法吗?我在谷歌上搜索了一下,但没有找到任何资源。您能指导我吗?如果我正确理解您想要的是对象之间的映射,请使用Automapper,它将为您进行映射
git hub路径是的,可以将实体框架实体自动投影到某些Dto。请参见此处的一个实现 您可以将其用作:
context.Persons.Project().To<PersonNameModel>().ToList();
context.Persons.Project().To().ToList();
在这种情况下,将生成db查询以仅选择所需的列(由PersonNameModel指定)
如果您只想映射查询结果(即检索到的对象),那么EmitMapper或AutoMapper应该是您的选择 太好了。多谢各位