【发布时间】:2016-12-06 20:56:57
【问题描述】:
警告:我对此很陌生,所以请放轻松。 我正在开发一个 netcore 应用程序并使用 Npgsql 连接到 postgresql 数据库。我不确定是什么导致了错误,但是当我尝试使用具有 [NotMapped] 属性的二维数组 (double[][]) 的模型运行 Add-Migration 时,我收到以下错误:
System.InvalidCastException:无法转换类型的对象 'Microsoft.EntityFrameworkCore.Storage.Internal.NpgsqlArrayTypeMapping' 输入 'Microsoft.EntityFrameworkCore.Storage.Internal.NpgsqlBaseTypeMapping'。
我怀疑这不是 Npgsql 问题,因为我认为 [NotMapped] 属性应该忽略 double[][] 并且不要尝试将其映射到某个东西。
这是模型的违规部分
[NotMapped]
public double[][] LossData
{
get
{
return JsonConvert.DeserializeObject<double[][]>(InternalLossData);
}
set
{
InternalLossData = JsonConvert.SerializeObject(value);
}
Microsoft.EntityFrameworkCore.Tools 是 1.1.0-preview4-final 版本。我认为这是负责添加迁移的包,因此我怀疑问题可能存在。
但我不知道。
更新
mww 的建议不起作用,所以我切换到使用默认的 sql 驱动程序(不是 Npgsql)并且它起作用了。这样就可以将其范围缩小到我做错的事情或使用 Npgsql 的事情。
【问题讨论】:
-
你想忽略这个属性吗?你尝试使用
Fluent API吗? -
仅供参考,我强烈怀疑这只是因为其他 EF Core 驱动程序(例如 SqlServer)根本不支持数组,因此会自动忽略您的属性。我会尽快调查此事。
标签: entity-framework asp.net-core entity-framework-migrations npgsql asp.net-core-1.1