Я пытаюсь создать каркас для абстрагирования своих Entity Layers, однако, чтобы это работало, мне нужны работающие с помощью Autopper проекты, чтобы я мог запрашивать свои DTO вместо запросов к Entities
[TestMethod]
public async Task Verify_Mapping_Projection_Behavior()
{
var projectionModifier = "Alabastar";
var services = this.GetRegisteredRestEzServiceCollection();
var serviceProvider = services.BuildServiceProvider();
var context = (AstootContext)serviceProvider.GetService<DbContext>();
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<User, UserDTO>().ForMember(x => x.FirstName,
o => o.MapFrom((entity, dto) => entity.FirstName + projectionModifier));
});
var mapper = config.CreateMapper();
// Hack: we'll verify exeuction happens in sql
// using the behavioral differene between in memory and sql (case insensitivity)
var sqlOnlyModifier = projectionModifier.ToUpper();
var userDTO = mapper.ProjectTo<UserDTO>(context.Users)
.Where(x => x.FirstName.Contains(sqlOnlyModifier))
.FirstOrDefault();
Assert.IsNotNull(userDTO);
}
Мой тест не удалось, поэтому я решил материализовать проекцию напрямую. Когда я материализуюсь, я вижу, что мои projectionModifier
не добавляются в свойство firstName.
Как я могу заставить проект отобразить мой модификатор, чтобы я мог использовать свои DTO как Sql Queryables?