我有一个问题...
我需要将一个列表分为两个对象,我有下一个代码:
public class User
{
[Key]
public Guid Id { get; set; }
public virtual List<PersonalData> _PersonalData
{
get
{
List<PersonalData> listDP = new List<PersonalData>();
if (PersonalData != null)
{
listDP.Add(PersonalData);
}
if (InitialsPersonalData != null)
{
listDP.Add(InitialsPersonalData);
}
return listDP;
}
set
{
InitialsPersonalData = value.FirstOrDefault(dp => dp.IsInitialData);
PersonalData = value.FirstOrDefault(dp => !dp.IsInitialData);
}
}
[NotMapped]
public PersonalData InitialsPersonalData { get; set; }
[NotMapped]
public PersonalData PersonalData { get; set; }
}
public class PersonalData
{
[Key, ForeignKey("User"), Column(Order = 0)]
public Guid User_Id { get; set; }
[Key, Column(Order = 1)]
public bool IsInitialData { get; set; }
public virtual User User { get; set; }
[Required]
public string Email { get; set; }
[Required]
public string Name { get; set; }
public string Surname { get; set; }
}
public class Document
{
[Key, ForeignKey("User"), Column(Order = 0)]
public Guid User_Id { get; set; }
[Key, Column(Order = 1), DatabaseGenerated(DatabaseGeneratedOption.None)]
public DocumentType DocumentType { get; set; }
public virtual User User { get; set; }
public string DocumentNumber { get; set; }
}
可能吗?我正在使用延迟加载。 get方法有效,但set方法无效,切勿输入set方法。
我尝试使用_PersonalData作为私有和公共属性,并带有虚拟的和不带有虚拟的...问题是当我这样做时:
dbContext.Users.Where(......)
PersonalData和InitialPersonalData始终为null,Documents正常运行,并且可以自包含。
能帮我吗?怎么了?有可能吗?谢谢大家
答案 0 :(得分:0)
PersonalData
和InitialPersonalData
没有映射到数据库中,因此不能在数据库端使用它们。
在使用数据之前,您需要先用dbContext.Users.ToList()
来实现您的数据,但是这将显示整个Users表,并且如果您要过滤其他条件,则取决于大小,这会使您的应用程序变慢在实现之前将您的表应用于改善性能。