首页 新闻 会员 周边

EF Core 3.0 的奇怪问题:Invalid cast from 'System.Int32' to 'PostConfig'

0
悬赏园豆:50 [已解决问题] 解决于 2019-10-16 18:10

同样的 LINQ

var result = await _postQueryRepository
    .GetPostsByStartId(blogId, startId, postType, postConfig, startDate)
    .OrderBy(p => p.Id)
    .Take(itemCount)
    .ProjectToType<T>()
    .ToListAsync();

当 itemCount > 1 时,能正常执行。
当 itemCount = 1 时,则报下面的异常:

System.InvalidCastException: Invalid cast from 'System.Int32' to 'PostConfig'.
   at System.Convert.DefaultToType(IConvertible value, Type targetType, IFormatProvider provider)
   at System.Int32.System.IConvertible.ToType(Type type, IFormatProvider provider)
   at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
   at System.Convert.ChangeType(Object value, Type conversionType)
   at Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverter`2.Sanitize[T](Object value)
   at Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverter`2.<>c__DisplayClass3_0`2.<SanitizeConverter>b__0(Object v)
   at Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping.CreateParameter(DbCommand command, String name, Object value, Nullable`1 nullable)

请问如何解决?
注:PostConfig 是枚举类型。

问题补充:

异常出现在 Created DbCommand for '"ExecuteReader"' 之后。

.ToListAsync() 改为 .FirstOrDefaultAsync() 则没这个问题。

dudu的主页 dudu | 高人七级 | 园豆:31007
提问于:2019-10-14 22:29
< >
分享
最佳答案
0

是 ProjectToType 对应的 Mapster 映射配置引起的

.Map(dest => dest.IsPrivated, src => (src.PostConfig & PostConfig.IsActive) == PostConfig.Empty)
dudu | 高人七级 |园豆:31007 | 2019-10-16 18:09
其他回答(1)
0

多半是数据库里的数据有问题

收获园豆:50
shangsharon | 园豆:251 (菜鸟二级) | 2019-10-15 14:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册