C# 嵌套集合上的EF核心和#x27;s属性不起作用

C# 嵌套集合上的EF核心和#x27;s属性不起作用,c#,entity-framework-core,C#,Entity Framework Core,我的数据库具有以下结构:一个用户可以有多个帐户。一个帐户可以有许多转账 这是地图配置。我想在我的DTO中存储每个用户及其在每个帐户中的总储蓄的信息。(下面的代码表示整个配置的一部分) 编辑2: 在EntityFrameworkCore的GitHub上创建了一个问题:我能够使用SQLite提供程序复制它,并且数量类型为十进制(使用SqlServer提供程序可以正常工作) 因此,您似乎从EF核心文档中找到了以下SQLite: SQLite本机不支持以下数据类型。EF Core可以读取和写入这些类型的

我的数据库具有以下结构:一个用户可以有多个帐户。一个帐户可以有许多转账

这是地图配置。我想在我的DTO中存储每个用户及其在每个帐户中的总储蓄的信息。(下面的代码表示整个配置的一部分)

编辑2:


在EntityFrameworkCore的GitHub上创建了一个问题:

我能够使用SQLite提供程序复制它,并且
数量
类型为
十进制
(使用SqlServer提供程序可以正常工作)

因此,您似乎从EF核心文档中找到了以下SQLite:

SQLite本机不支持以下数据类型。EF Core可以读取和写入这些类型的值,并且还支持查询相等性(其中e.Property==value)。但是,其他操作(如比较和排序)需要对客户端进行评估

  • 日期时间偏移
  • 十进制
  • 时间跨度
  • UInt64

作为解决方案,考虑接受医生的建议:

Decimal
类型提供了高精度。但是,如果您不需要该级别的精度,我们建议使用double。您可以使用值转换器在类中继续使用decimal

带样品

modelBuilder.Entity<MyEntity>()
    .Property(e => e.DecimalProperty)
    .HasConversion<double>();           
modelBuilder.Entity()
.Property(e=>e.DecimalProperty)
.HasConversion();

尝试在没有AM的情况下用LINQ编写,这样行吗?如果有,请检查并找出差异。看起来EF Core也无法处理该表达式。所以这不是AutoMapper的问题。这是有道理的。在他们的回购协议中打开一个问题,也许你会找到解决办法:)@IvanStoev,你能用Sqlite试试吗?@TonyTroeff就是这样!见下文。干杯,非常感谢!这帮助我解决了这个问题。
var resultSet = await this._dbContext.Users
    .ProjectTo<UserTestModel>(this.Mapper.ConfigurationProvider)
    .ToListAsync(cancellationToken)
    .ConfigureAwait(false);
var resultSet = await this._dbContext.Users
    .Select(u => u.Accounts.Select(a => a.Transfers.Sum(t => t.Amount)).ToList())
    .ToListAsync(cancellationToken)
    .ConfigureAwait(false);
modelBuilder.Entity<MyEntity>()
    .Property(e => e.DecimalProperty)
    .HasConversion<double>();