Entity Framework Core 2.0, отображающий int на SQL Server, smallint генерирует исключение по запросу - PullRequest
0 голосов
/ 11 мая 2018

Я сопоставил свойство int с smallint в SQL Server. Когда я запрашиваю базу данных, я получаю следующее исключение:

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();

1 Ответ

0 голосов
/ 11 мая 2018

Измените 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...