При использовании Linq to SQL с хранимыми процедурами должны ли столбцы char(1) возвращаться как символы c #?

StackOverflow https://stackoverflow.com/questions/73198

Вопрос

При использовании Linq to SQL и хранимых процедур класс, созданный для описания результирующего набора процедуры, использует свойства char для представления столбцов char(1) в процедуре SQL.Я бы предпочел, чтобы это были строки - есть ли какой-нибудь простой способ сделать так, чтобы это произошло?

Это было полезно?

Решение

Вы могли бы изменить файл {database}.designer.cs.У меня нет ни одного удобного варианта для проверки, но я считаю, что это довольно просто - вам просто придется поработать с большим количеством кода и не забыть повторно применить изменение, если вы когда-нибудь его восстановите.

В качестве альтернативы, вы могли бы создать свой собственный класс и обработать его в select.Например, учитывая класс, сгенерированный LINQ:

class MyTable
{      int MyNum {get; set;}
       int YourNum {get; set;}
       char OneChar {get; set;}
}

вы могли бы легко создать:

class MyFixedTable
{      int MyNum {get; set;}
       int YourNum {get; set;}
       string OneChar {get; set;}
   public MyFixedTable(MyTable t)
   {
         this,MyNum = t.MyNum;
         this.YourNum = t.YourNum;
         this.OneChar = new string(t.OneChar, 1);
   }
}

Тогда вместо того, чтобы писать:

var q = from t in db.MyTable
        select t;

писать

var q = from t in db.MyTable
        select new MyFixTable(t);

Другие советы

var whatever =
    from x in something
    select new { yourString = Char.ToString(x.theChar); }

Просто перейдите в окно конструктора и измените тип на string.Я делаю это постоянно, так как нахожу, что строки в моем коде проще использовать, чем символ Char.

Не уверен, зачем вам это понадобилось.Базовый тип данных не может хранить более одного символа, представляя его как строковую переменную, вы вводите необходимость проверки длин перед передачей в БД, где, как будто вы оставляете все как есть, вы можете просто вызвать toString() для символа, чтобы получить строку

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top