指定列TypeName EntityFramework Core会引发InvalidCastException

时间:2016-12-08 22:34:10

标签: entity-framework-core

我有一个带有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时,我没有获得例外。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

这是因为实体框架将tinyint映射到dotnet中的一个字节。你必须使用byte。

更多信息:https://stackoverflow.com/a/22714283/1932945