我需要将数据库表中具有char(16)类型的列映射到实体(称为Number)中的字段属性,该类型为Long。
我得到了
指定的成员映射无效。 'MyEntity'中成员'Edm.Int64'成员'Number'与SqlServer.char不兼容。
有没有办法解决这个问题?
我用谷歌搜索但没有看到任何明确的答案,从我到目前为止读到的EF与char类型的斗争,但肯定有办法解决这个问题?
我正在使用EF NUGET包v6.1.3
答案 0 :(得分:0)
将一种类型的数据库列映射到另一种类型将在您的特定情况下导致潜在的和最终的数据丢失。
如果存储的值超过short类型的最大允许值(相当于SQL中的char(16)),则在C#中的long变量中,将无法将所有数据存储在数据库中。
您的应用程序和数据库将相互矛盾,您愿意开放应用程序以应对错误和逻辑挑战。
由于上述原因,强烈建议您确保应用程序的变量类型等同于数据库列类型,反之亦然。
您要求的修复是确保这些数据类型彼此对应。这种例外是有原因的,简单地说,长和短以这种方式彼此不兼容。您可以在较长的时间内存储一个较短的值,但是您不能在短期内存储长值,因为这会导致数据丢失。