Linq ExecuteCommand не понимает нулей - PullRequest
22 голосов
/ 13 мая 2009

У меня проблема при передаче нулей в метод ExecuteCommand () с помощью linq. Мой код похож на следующий:

    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 ».

Ошибка не возникает, если никакие параметры не равны нулю. Я знаю, что дизайн в моем примере немного плох, я просто создал упрощенный пример, чтобы сосредоточиться на проблеме. Есть предложения?

Ответы [ 11 ]

0 голосов
/ 13 мая 2009

вы пытались присвоить значение тем, которые являются нулевыми? Значение (псевдо):

Если адрес равен нулю, то адрес = "" или же Если возраст <0, то возраст = 0 </p>

затем добавьте его в myList

или вы всегда можете использовать троичный оператор:

name = name.Length < 1 ? "" : name;
age = age < 1 ? Int32.MinValue : age;

затем добавьте его в myList

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...