我有一个带有int属性的实体,我希望在Sql Server中将其存储为tinyint
。我用流利的api成功地完成了这项工作。
但是,当我查询数据库时,我得到InvalidCastException: Specified cast is not valid.
我的(简化)代码:
public class Category
{
public int Id { get; set; }
public int Level { get; set; }
public string Name { get; set; }
}
public class ProductContext : DbContext
{
public DbSet<Category> Categories { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Category>()
.Property(m => m.Level)
.HasColumnType("tinyint");
base.OnModelCreating(modelBuilder);
}
}
当我将Level
属性类型更改为byte
时,我没有获得例外。
我做错了什么?
答案 0 :(得分:2)
这是因为实体框架将tinyint映射到dotnet中的一个字节。你必须使用byte。