【发布时间】:2017-05-22 09:18:18
【问题描述】:
我正在研究现有的解决方案。我有两个实体,比如
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public DateTime? DOB { get; set; }
private List<long> _accounts = new List<long>();
[Display(Name = "Account No")]
public List<long> Accounts
{
get { return _accounts; }
set { _accounts = value; }
}
[Display(Name = "Account No")]
public string AccountId
{
get { return string.Join(",", _accounts); }
set { _accounts = value != null ? value.Split(',').Where(s=>!string.IsNullOrWhiteSpace(s)).Select(s => Convert.ToInt64(s.Trim())).ToList() : new List<long>(); }
}
}
public class Account
{
public long Id { get; set; }
public string AccountName { get; set; }
public string AccountNo { get; set; }
}
还有一个ViewModel
public class UserAccountViewModel
{
public long AccountId { get; set; }
public string AccountNo { get; set; }
public int UserId { get; set; }
public string UserName { get; set; }
}
现在,我如何从这些实体中获取List<UserAccountViewModel>?
【问题讨论】:
-
你不能。您需要在 AccountId 和 UserId 之间进行映射。您可能有 5 个用户和 10 个帐户,但您不知道哪个用户拥有每个帐户。
-
几个问题。为什么不将 Account 实体映射到 User 实体?其次,如果一个用户可以有多个帐户,为什么 UserAccountViewModel 不包含帐户列表?
-
您需要在
Account实体和User实体之间建立关系-似乎需要ICollection在它们之间进行映射。此外,它可能需要List<Account> Accounts中的UserAccountViewModel来保存帐户数量。 -
我需要按账户列出用户。而我不能这样做。因为我正在研究现有的解决方案。
-
您似乎误用了单数和复数,这会造成混淆,并且总体上不利于示例和代码库的可读性。
_account(单数)是一个列表(多个对象);AccountIds(复数)返回一个字符串(单数)。
标签: c# .net asp.net-mvc entity-framework linq