Я не знаю, связана ли проблема с новой функцией EF Core, которой нет в EF 6 или, что более важно, как я могу добиться той же функциональности с помощью EF 6.
Рассмотрим следующий код установки:
Код: Выделить всё
public class Outer
{
[Key]
public int OuterId { get; set; }
public string Name { get; set; }
public HashSet Inners { get; set; }
}
public class Inner
{
[Key]
public int InnerId { get; set; }
public string Type { get; set; }
}
public class MyDbContext : DbContext
{
public DbSet Outers { get; set; }
// ...override OnConfiguring() and set provider, e.g. 'UseSqlServer()'...
}
public class OuterDTO
{
public string Name { get; set; }
public IReadOnlyCollection Inners { get; set; }
}
public class InnerDTO
{
public string Type { get; set; }
}
Код: Выделить всё
using (MyDbContext db = new MyDbContext())
{
IQueryable query = db.Outers.Select(entity => new OuterDTO {
Name = entity.Name,
Inners = entity.Inners.Select(inner => new InnerDTO {
Type = inner.Type
}).ToList()
}).ToList();
List outers = query.ToList();
Console.WriteLine(outers);
}
Типы аргументов не совпадают
Однако странно, что меняется создание экземпляра внешнего объекта (
Код: Выделить всё
OuterDTOКод: Выделить всё
...db.Outers.Select(entity => new { ... })...
Невозможно ли добиться этого с помощью Entity Framework 6? Или я что-то упускаю из виду?
Подробнее здесь: https://stackoverflow.com/questions/797 ... t-in-entit
Мобильная версия