Я работаю на веб-сайте ASP.NET Core MVC с EF-CORE, в моей базе данных есть таблица "Doc" и таблица "Signature", один Doc может иметь много подписей, а одна Signature может быть только на DocВот мой код Первая сущность Модель:
Документ:
public class Doc
{
[Key]
public int DocID { get; set; }
[Required]
public int DocTypeID { get; set; }
[ForeignKey("DocTypeID")]
public virtual DocType DocType { get; set; }
[Required]
public int Version { get; set; }
[Required]
public Byte[] Data { get; set; }
[ForeignKey("DocID")]
public List<Signature> Signatures { get; set; }
}
Подпись: открытый класс Подпись {
//FK ITPolicyVersion
[Key]
public int DocID { get; set; }
[ForeignKey("DocID")]
public virtual Doc Doc { get; set; }
//FK EmployeeID
[Key]
public int EmployeeID { get; set; }
[ForeignKey("EmployeeID")]
public virtual Employee Employee { get; set; }
[Required]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
[Display(Name = "Signature Date")]
public DateTime? SignatureDate { get; set; }
public String Value { get; set; }
}
Но когда я использую этот запрос:
_applicationDBContext.Doc
.Include(d => d.DocType)
.Include(d => d.Signatures)
.OrderBy(d => d.DocType)
.ToList();
d.Signatures всегда нулевой, и я не могу понять, почему.
Вот что я пытаюсь сделать в SQL:
Select * from Doc d
join DocType dt on dt.DocTypeID = d.DocTypeID
join Signature s on s.DocID = d.DocID
join Employee e on e.EmployeeID = s.EmployeeID
И это хорошо работает в SQL, но не с LINQ
EDIT
Эта работа:
List<Doc> docs = _applicationDBContext.Doc
.Include(d => d.Signatures)
.ThenInclude(s=>s.Employee)
.Include(d => d.DocType)
.ToList();
Но неthis:
List<Doc> docs = _applicationDBContext.Doc
.Include(d => d.Signatures)
.ThenInclude(s=>s.Employee)
.Include(d => d.DocType)
.OrderBy(d => d.DocType)
.ToList();
Подпись стала пустой
Как я могу заказать этот список по DocType?