gpt4 book ai didi

c# - Linq ExecuteCommand 不理解空值

转载 作者:IT王子 更新时间:2023-10-29 04:31:29 24 4
gpt4 key购买 nike

我在使用 linq 将空值传递给 ExecuteCommand() 方法时遇到问题。我的代码类似于以下代码:

    public void InsertCostumer(string name, int age, string address)
{
List<object> myList = new List<object>();

myList.Add(name);
myList.Add(age);
myList.Add(address);

StringBuilder queryInsert = new StringBuilder();
queryInsert.Append("insert into Customers(name, address) values ({0}, {1}, {2})");

this.myDataContext.ExecuteCommand(queryInsert.ToString(), myList.ToArray());
}

但是,当参数为 null(例如地址)时,我收到以下错误:“查询参数不能为‘System.Object’类型。”

如果没有参数为空,则不会发生错误。我知道我的例子中的设计有点差,我只是创建了一个简化的例子来关注这个问题。有什么建议吗?

最佳答案

这是一个已知错误,Microsoft 不打算修复它...

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=305114&wa=wsignin1.0

解决方法是:

  1. 进入ADO.NET并直接执行SQL命令
  2. 格式化您自己执行的字符串并使用空对象数组 (new object[0]) 调用 ExecuteCommand

第二个不是一个好主意,因为它使您容易受到 SQL 注入(inject)攻击,但它是一个快速的 hack。

关于c# - Linq ExecuteCommand 不理解空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/859985/

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