gpt4 book ai didi

C# CLR 存储过程不会部署到 SQL Server 2005

转载 作者:太空狗 更新时间:2023-10-30 01:11:53 25 4
gpt4 key购买 nike

我正在开发一个 C# SQL Server 2005 存储过程来为我的应用程序执行数据验证。我构建了一个很好的框架,可以正常工作。验证方法如下:

private void TestDate() {
TestFields(delegate (string value) {
if (value == String.Empty || value == "")
return true;
return IsDate(value);
});
}

该解决方案可以使用如上所示的多种方法编译、部署和运行良好。 TestFields 遍历查询返回的列,调用返回有效性测试是否通过的委托(delegate)。我添加了一个新方法:

private void TestRequired() {
TestFields(delegate (string value) {
return ! (value == String.Empty || value == "");
});
}

使用此方法,DLL 将不会部署:CREATE ASSEMBLY 失败,因为安全程序集“SurveyValidation”中类型“SurveyValidator”上的方法“TestRequired”正在存储到静态字段。安全程序集中不允许存储到静态字段。

我正在拔头发。如果我注释掉 TestRequired(),它就会起作用。显然,它不是在做赋值语句,所以我不知道 SQL Server 在提示什么。我只是偶然发现了某种晦涩的错误吗? (我知道错误是什么意思,我在SP类中没有任何静态字段。只是创建项目给你的静态入口方法。)

TIA,戴夫

最佳答案

添加 CompilerGeneratedAttribute在你的类声明前面:

This attribute allows SQL server to reference compiler-generated static values.

我知道这听起来有点不正统,但这样做完全没问题。

关于C# CLR 存储过程不会部署到 SQL Server 2005,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1598213/

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