EF DTO平面视图模型



我想知道是否有从实体框架中创建平面视图模型的快捷方式。用户表有一个地址列表。填充视图模型时,会对streetline1和streetline2使用FirstOrDefault。有没有一个快捷方式来填充列表中的两个字符串?

static void Main(string[] args)
{
//EF Data
User EFUser = new User();
EFUser.UserId = 1;
EFUser.Username = "Data";
List<Address> ListOfAddress = new List<Address>();
ListOfAddress.Add(new Address() { UserId=1, StreetLine1="address 1",StreetLine2="address line2 1" });
EFUser.Address = ListOfAddress;
ViewModelUserFlat vm = new ViewModelUserFlat();
vm.UserId = EFUser.UserId;
vm.UserName = EFUser.Username;
vm.StreetLine1 = ListOfAddress.Select(a => a.StreetLine1).FirstOrDefault();
vm.StreetLine2 = ListOfAddress.Select(a => a.StreetLine2).FirstOrDefault();
}
class Address
{
public int AddressId { get; set; }
public int UserId { get; set; }
public string StreetLine1 { get; set; }
public string StreetLine2{ get; set; }
}
class User
{
public int UserId { get; set; }
public string Username { get; set; }
public List<Address> Address { get; set; }
}
class ViewModelUserFlat
{
public int UserId { get; set; }
public string UserName { get; set; }
public string StreetLine1 { get; set; }
public string StreetLine2 { get; set; }
}

分配StreetLine1StreetLine2有多种方法。由于您的Address是列表类型,因此需要使用FirstOrDefault或索引

var address = ListOfAddress.FirstOrDefault();
vm.StreetLine1 = address?.StreetLine1;
vm.StreetLine2 = address?.StreetLine2;

vm.StreetLine1 = address.FirstOrDefault().StreetLine1;
vm.StreetLine2 = address.FirstOrDefault().StreetLine2;

vm.StreetLine1 = ListOfAddress[0].StreetLine1;
vm.StreetLine2 = ListOfAddress[0].StreetLine2;

最新更新