我在SQL Server中将int
属性映射到smallint
。当我查询数据库时,我得到以下异常:
InvalidOperationException:发生异常时 读取属性' Tag.Count'的数据库值。预期的类型 是' System.Int32'但实际价值是'System.Int16'
类型
我想这样做,因为如果我在实体上使用short
,我最终必须编写额外的代码来将short
投射到int
。
相关代码快照:
public class Tag
{
public int Count { get; set; }
//Other properties
}
//In DbContext
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<Tag>().Property(m => m.Count).HasColumnType("smallint");
}
//query
var tags = await context.Tags.ToArrayAsync();
答案 0 :(得分:2)
将int
更改为int16
,SMALLINT
为16位,int
为32位。
因此32位不能转换为16位。您也可以使用short
数据类型。
public class Tag
{
public int16 Count { get; set; }
// or,
/* public short Count { get; set; } */
//Other properties
}
//In DbContext
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<Tag>().Property(m => m.Count).HasColumnType("smallint");
}
//query
var tags = await context.Tags.ToArrayAsync();