C# 如何在针对SQL Server执行列之前使用AutoMapper筛选列
我想使用AutoMapper将实体映射到DTO对象。我想筛选我的列,然后根据数据库执行它们,但它将获取所有COL,然后进行映射:C# 如何在针对SQL Server执行列之前使用AutoMapper筛选列,c#,entity-framework,automapper,C#,Entity Framework,Automapper,我想使用AutoMapper将实体映射到DTO对象。我想筛选我的列,然后根据数据库执行它们,但它将获取所有COL,然后进行映射: AutoMapper.Mapper.Initialize(cfg => { cfg.CreateMap<User, UserDTO>(); /* etc */ }); ShamsEntities Entities = new ShamsEntities(); var Res = Entities.Users.AsEnu
AutoMapper.Mapper.Initialize(cfg => {
cfg.CreateMap<User, UserDTO>();
/* etc */
});
ShamsEntities Entities = new ShamsEntities();
var Res = Entities.Users.AsEnumerable().Select(role => Mapper.Map<User, UserDTO>(role)).ToList();
下面是我的选择查询:
SELECT [Extent1].[ID] AS[ID],
[Extent1].[FirstName] AS [FirstName],
[Extent1].[LastName] AS [LastName],
[Extent1].[Email] AS [Email],
[Extent1].[UserName] AS [UserName],
[Extent1].[Password] AS [Password],
[Extent1].[DiskUsed] AS [DiskUsed],
[Extent1].[DiskUsage] AS [DiskUsage],
[Extent1].[Status] AS [Status],
[Extent1].[Telephone] AS [Telephone],
[Extent1].[Mobile] AS [Mobile],
[Extent1].[Skype] AS [Skype],
[Extent1].[IM] AS [IM],
[Extent1].[GoogleUserName] AS [GoogleUserName],
[Extent1].[CompanyName] AS [CompanyName],
[Extent1].[CompanyAddress] AS [CompanyAddress],
[Extent1].[CompanyTelephone] AS [CompanyTelephone],
[Extent1].[CompanyFax] AS [CompanyFax],
[Extent1].[CompanyEmail] AS [CompanyEmail],
[Extent1].[Tets] AS [Tets] ...
您可以使用Automapper的“可查询外部”
调用ProjectTo
而不是调用Map
var Res = Entities.Users.AsQueryable().Select(role => Mapper.ProjectTo<UserDTO>(role)).ToList();
var Res=Entities.Users.AsQueryable().Select(role=>Mapper.ProjectTo(role)).ToList();
请参阅。您可以使用Automapper的“可查询外部”
调用ProjectTo
而不是调用Map
var Res = Entities.Users.AsQueryable().Select(role => Mapper.ProjectTo<UserDTO>(role)).ToList();
var Res=Entities.Users.AsQueryable().Select(role=>Mapper.ProjectTo(role)).ToList();
请参阅。如果要映射(使用AutoMapper)并仅从数据库中检索所需的列,则还应安装
而不是:
var Res = Entities.Users.AsEnumerable().Select(role => Mapper.Map<User, UserDTO>(role)).ToList();
请注意,您不需要调用AsEnumerable()
,也不需要使用Select()
,它被ProjectTo()
替换
更多信息。如果要映射(使用AutoMapper)并从数据库中检索所需的列,则还应安装
而不是:
var Res = Entities.Users.AsEnumerable().Select(role => Mapper.Map<User, UserDTO>(role)).ToList();
请注意,您不需要调用AsEnumerable()
,也不需要使用Select()
,它被ProjectTo()
替换
更多信息
var Res = Entities.Users.ProjectTo<UserDTO>().ToList();