Использование DbContext для получения количества детей и сопоставления с собственностью - PullRequest
0 голосов
/ 31 января 2019

У меня есть следующее дерево объектов, где каждый план является родительским для комментариев и проблем.На клиенте я действительно не забочусь о деталях 90% времени, и поэтому комментарии лениво загружаются при расширении на уровне отдельных участников.Но мне нужны небольшие метаданные о них для текущей функции, над которой я работаю.

[DataContract]
public class Plan
{
    [Key]
    public int Id { get; set; }
    //Ton of properties

}

[DataContract]
public class Comment
{
    [Key]
    public int Id { get; set; }

    [DataMember]
    [Required]
    public bool IsConcern { get; set; }

    [DataMember]
    [Required]
    public bool IsResolved { get; set; }

    [DataMember]
    [MaxLength(30)]
    public string Discipline { get; set; }

    [DataMember]
    public int Plan_Id { get; set; }

    //Other properties
}

Я хотел бы сделать что-то вроде этого

[DataContract]
public class Plan
{
    [Key]
    public int Id { get; set; }
    //Ton of properties

    public int Discipline1UnresolvedConcernCount?  { get; set; }
    //... Discipline2.... Discipline 8


}


    modelBuilder.Entity<Plan>()
        .Ignore(x => x.IsIntegrated)
        .Ignore(x => x.Discipline1UnresolvedConcernCount)
        .Ignore(x => x.Discipline2UnresolvedConcernCount)

Служба

public class PlansController : BaseODataController
{
    /// <summary>
    /// Look up a Plan record by ID
    /// </summary>
    /// <param name="key">ID for the Plan</param>
    [EnableQuery]
    [Authorize]
    public SingleResult<Plan> Get([FromODataUri] int key)
    {
        using (CreateTimedTelemetryTrace($"key:{key}"))
        {
            IQueryable<Plan> result = DataContext.Plans.Where(bu => bu.Id == key)
           //Improve Query to get counts


            return SingleResult.Create(result);
        }
    }
}

Есть ли способ сделать то, что я хочу сделать, и это чисто?

...