У меня есть таблица в базе данных SQL, которая содержит вычисляемый столбец, что-то вроде следующего:
CREATE TABLE MyTable
(
Rate decimal(10,5) NOT NULL,
Quantity int NOT NULL,
Cost as Quantity * Rate
)
Когда я пытаюсь вставить строку в эту таблицу с помощью поставщика типа Microsoft.FSharp.Data.TypeProviders.SqlDataConnection, происходит сбой с ошибкой «Столбец «Стоимость» не может быть изменен, поскольку он является либо вычисляемым столбцом, либо результатом оператор UNION».
Соответствующий сгенерированный SQL:
INSERT INTO [MyTable]([Rate], [Quantity], [Cost])
VALUES (@p0, @p1, @p2)
SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value]
-- @p0: Input Decimal (Size = -1; Prec = 10; Scale = 5) [99.77]
-- @p1: Input Int (Size = -1; Prec = 0; Scale = 0) [1000000]
-- @p2: Input Decimal (Size = -1; Prec = 21; Scale = 5) [Null]
-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 4.0.30319.17929
Есть ли способ предотвратить попытку поставщика типа указать вычисляемое поле?