Предвидение Продолжая искать свою проблему, я посмотрел на свою базу данных в SSMS и заметил, что мой "float" занимал 8 байтов.
Шаги, которые я предпринял, приводя к Нахождение вопроса было следующим. Сначала в бэкэнде я зарегистрировал Query().toString();
, чтобы получить строку SQL, отправляемую в базу данных SQL. Что-то вроде:
SELECT[Extent1].[Id] AS [Id],[Extent1].[Name] AS [Name],[Extent1].[ItemType] AS [ItemType], [Extent1].[Price] AS [Price],[Extent1].[Version] AS [Version],[Extent1].[CreatedAt] AS [CreatedAt],[Extent1].[UpdatedAt] AS [UpdatedAt],[Extent1].[Deleted] AS [Deleted]FROM [dbo].[MealItems] AS [Extent1]
Я попытался записать результат этого оператора как ошибку, но ничего не получил. Пытаясь найти решение, опубликованное @albert Morillo, я попытался
SELECT[Extent1].[Id] AS [Id],[Extent1].[Name] AS [Name],[Extent1].[ItemType] AS [ItemType], Try_convert(float,[Extent1].[Price]) AS [Price],[Extent1].[Version] AS [Version],[Extent1].[CreatedAt] AS [CreatedAt],[Extent1].[UpdatedAt] AS [UpdatedAt],[Extent1].[Deleted] AS [Deleted]FROM [dbo].[MealItems] AS [Extent1]
, но все равно ничего не получил. Наконец-то у меня появилась возможность поместить это утверждение в попытку и зафиксировать там ошибку. Он выплюнул следующее:
"Error: The 'Price' property on 'MealItem' could not be set to a 'System.Double' value. You must set this property to a non-null value of type."
Не зная, что это значит, я искал двойной тип столбца в SSMS. Не найдя его, я решил изменить свои числа с плавающей запятой на бэкэнд-приложение. Волшебным образом, похоже, это помогло.
Я не уверен, что это правильное решение, но, похоже, оно работает для меня. Имеет смысл, поскольку база данных SQL сохраняет и 8-байтовый номер, а двойной C# - 8 байтов.