我正在为数据库的小型服务工具工作。我的问题是,由于上次更新,一些smallint-colums不得不被更改为整数。实体框架代码优先 - 铸造smallint和整数int32
public class TEST
{
public int ID { get; set; }
//public Int16 ID { get; set; }
public string TEST { get; set; }
}
我将类型从Int16更改为int。一切工作正常,除了我不能使用它的旧版本的数据库了。异常是类似“System.Int32预期,发现类型System.Int16”。
有没有办法将所有smallint和整数转换为int32?
任何想法?我的环境:5.0.0的EntityFramework .NET 4.5 FirebirdClient 3.0.2.0
我试图迫使在模型构建器铸造:
modelBuilder.Entity<TEST>()
.Property(p => p.ID)
.HasColumnType("smallint");
例外:
错误2019:会员映射指定为无效。 Typ'ContextRepository.TEST'中成员'ID'的'Edm.Int32 [Nullable = False,DefaultValue =]'类型与成员'FirebirdClient.smallint [Nullable = False,DefaultValue =,StoreGeneratedPattern = Identity]'不兼容在类型“CodeFirstDatabaseSchema.BUNDLAND”
使该ID的Int16“SCHLUESSEL”,然后浇注一切SMALLINT(HasColumnType(“INT”))工作正常,但会给我例外比31767(SMALLINT最大值)更大的数字...
为什么不能升级数据库以使用INTEGER作为此列? –
我只写了一个维护程序,并在主应用程序中担心副作用... – Dust258