繁体   English   中英

使用实体框架将列表对象分为两个对象

[英]Divide List object in two objects with Entity Framework

我有个问题...
我需要将一个列表分为两个对象,我有下一个代码:

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可以正常运行,并且可以正确地包含。
你能帮我吗? 怎么了? 有可能吗? 谢谢大家

PersonalDataInitialPersonalData没有映射到数据库中,因此您不能在数据库端使用它们。

在使用它们之前,需要使用dbContext.Users.ToList()来实现您的数据,但这将调出您的整个Users表,并且根据大小,如果您有任何其他条件来过滤您的数据,这将使您的应用程序变慢在实现之前应用表格,以提高性能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM