我正在使用Entity Framework Code First,并尝试从我的实体类映射到我的DTO类。但我很难弄清楚如何编写选择器。
在这个小例子中,我创建了一个Person类和一个Address类。
在DTO类中,我创建了一个选择器,它将我的Entity映射到我的DTO,但是在PersonDto.Selector中不能使用AddressDto.Selector吗?
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public Address Address { get; set; }
}
public class Address
{
public int Id { get; set; }
public string Street { get; set; }
}
现在我正在尝试将其映射到DTO类。
public class PersonDto
{
public static Expression<Func<Person, PersonDto>> Selector =
entity => new PersonDto
{
Id = entity.Id,
Name = entity.Name,
Address = ??? AddressDTO.Selector
};
public int Id { get; set; }
public string Name { get; set; }
public AddressDto Address { get; set; }
}
public class AddressDto
{
public static Expression<Func<Address, AddressDto>> Selector =
entity => new AddressDto
{
Id = entity.Id,
Street = entity.Street
};
public int Id { get; set; }
public string Street { get; set; }
}
我知道我可以将这个内容直接写在PersonDto.Selector里。
Address = new AddressDto
{
Id = entity.Address.Id,
Street = entity.Address.Street
};
但我正在寻找一种方法来重用AddressDto类中的选择器。这样可以保持代码整洁,并在类之间分离责任。