Я не знаю, связана ли проблема с новой функцией в EFCore, которой нет в EF6 или, что более важно, как я могу добиться той же функциональности с помощью EF6.
Рассмотрим следующий код установки:
Код: Выделить всё
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);
}
Код: Выделить всё
Argument types do not matchОднако странно, что изменение экземпляра внешнего объекта (
Код: Выделить всё
OuterDTOКод: Выделить всё
...db.Outers.Select(entity => new { ... })...
Невозможно ли добиться этого с помощью Entity Framework 6? Или я что-то упускаю из виду?
Подробнее здесь: https://stackoverflow.com/questions/797 ... t-in-entit
Мобильная версия