gpt4 book ai didi

sql - 计算列和 Microsoft.FSharp.Data.TypeProviders.SqlDataConnection

转载 作者:行者123 更新时间:2023-12-04 22:12:57 25 4
gpt4 key购买 nike

我在 SQL 数据库中有一个表,其中包含一个计算列,如下所示:

CREATE TABLE MyTable
(
Rate decimal(10,5) NOT NULL,
Quantity int NOT NULL,
Cost as Quantity * Rate
)

当我尝试使用 Microsoft.FSharp.Data.TypeProviders.SqlDataConnection 类型提供程序向该表中插入一行时,它失败并出现错误“无法修改列“Cost”,因为它是计算列或者是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

有什么方法可以防止类型提供程序尝试指定计算字段吗?

最佳答案

SqlDataConnection 在后台使用 LINQ to SQL,因此您可以通过 DBML 文件自定义列处理。不要让类型提供者(有点不完整)推断整个数据库模式,而是制作一个 DBML 文件和 connect to that .这是 information on mapping computed columns .

关于sql - 计算列和 Microsoft.FSharp.Data.TypeProviders.SqlDataConnection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17669962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com