【发布时间】:2021-09-03 09:39:37
【问题描述】:
我正在使用带有 LINQ 的 Entity Framework Core 来执行一些连接,但它没有按预期发生,如果选择两个对象,它会返回重复,如果我只选择一个人,则电话列表为空。我有我的对象:
public class Person{
private string _Name;
private string _CompanyTradeName;
[Key, Column("pID")]
public uint PersonID { get; set; }
[Column("pUUID")]
public Guid PersonUUID { get; set; }
[Column("pType")]
public string Type { get; set; }
[Column("pCrptName")]
public string Name {
get { return Encryption.DecryptString(_Name); }
set { _Name = value; }
}
[Column("pCrptCompanyTradeName")]
public string CompanyTradeName {
get { return (_CompanyTradeName != null) ? Encryption.DecryptString(_CompanyTradeName) : null; }
set { _CompanyTradeName = value; }
}
[Column("pProfilePicture")]
public string ProfilePicture { get; set; }
[Column("pStatus")]
public bool Status { get; set; }
public virtual ICollection<PersonAddress> PersonAddresses { get; set; }
public virtual ICollection<PersonDoc> PersonDocs { get; set; }
public virtual ICollection<PersonPhone> PersonPhones { get; set; }
}
我的 PersonPhone 类:
public class PersonPhone {
private string _PhoneNumber;
[Key, Column("ppID")]
public uint PersonPhoneID { get; set; }
[Column("ppUUID")]
public Guid PersonPhoneUUID { get; set; }
[Column("pID")]
public uint PersonID { get; set; }
public PhoneType PhoneTypes { get; set; }
[Column("ptID")]
public uint PhoneTypeID { get; set; }
[Column("ppCrptPhoneNumber")]
public string PhoneNumber { get { return Encryption.DecryptString(_PhoneNumber); } set { _PhoneNumber = value; } }
}
我正在尝试返回 PersonPhone 与 Person 的连接,但它返回 null:
var query = from p in _context.Person
join pp in _context.PersonPhone on p.PersonID equals pp.PersonID
select p;
return Ok(await query.FirstOrDefaultAsync());
有人可以帮我解决这个问题吗?
【问题讨论】:
-
我可能会离开这里,但
p不应该是PersonPhones中唯一的电话集合...有点像join pp in p.PersonPhones on p.PersonID equals pp.PersonID。我只是不清楚你是想要电话还是那个人。 -
请您也展示一下您的 PersonPhone 课程吗?
-
@Serge 我已经编辑了帖子。
标签: c# linq .net-core entity-framework-core linq-to-entities