Как вернуть модель с виртуальным свойством - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть такая модель,

[Table("ClientAccessories")]
public class ClientAccessory
{
    public ClientAccessory()
    {
        LastModifiedDateTime = DateTime.UtcNow;
    }

    public string AccessoryId { get; set; }

    public Guid ClientReference { get; set; }

    public DateTime LastModifiedDateTime { get; set; }

    public bool IsActive { get; set; }

    public virtual Accessory Accessory { get; set; }
}

, и у меня есть этот код в методе репозитория,

    public IEnumerable<ClientAccessory> GetClientAccessories(Guid ClientReference)
    {
        var _context = new DBContext();

      var results = from a in _context.Accessories
                         join ca in _context.ClientAccessories
                               on new { AccessoryId = a.Id, ClientReference = new Guid(ClientReference) }
                           equals new { ca.AccessoryId, ca.ClientReference } into ca_join
                         from ca in ca_join.DefaultIfEmpty()
                         where
                           ca.IsActive == true ||
                           ca.IsActive == null
                           select new {};
    }

Теперь проблема в том, что я не уверен, как вернуть ClientAccessoryвключение объекта Accessory вместе, хотя это виртуальное свойство.

Также допустимо ли вызывать 2 объекта в одном репозитории или я должен вернуть IQueryable и сделать это в классе обслуживания домена. спасибо.

Я не хочу выравнивать значения следующим образом:

 select new {
 Id = a.Id,
 ClientReference = ca.ClientReference
 and so on...

};

1 Ответ

0 голосов
/ 07 ноября 2019

если вы запрашиваете у ClientAccessory и включаете Accessory, вы должны получить то, что вы, что. Как то так:

public IEnumerable<ClientAccessory> GetClientAccessories(Guid ClientReference)
{
    var _context = new DBContext();

    var results = from ca in _context.ClientAccessory.Include("Accessory")
        where ca.IsActive == true || ca.IsActive == null
        select ca;
    return results;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...