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