1

当使用 Linq to SQL 和存储过程时,为描述 proc 结果集而生成的类使用 char 属性来表示 SQL proc 中的 char(1) 列。我宁愿这些是字符串 - 有什么简单的方法可以做到这一点吗?

4

4 回答 4

3

您可以修改 {database}.designer.cs 文件。我没有方便的检查,但我相信它相当简单 --- 你只需要翻阅大量代码,如果你重新生成它,请记住重新应用更改。

或者,您可以创建自己的类并在选择中处理它。例如,给定 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);
于 2008-09-16T16:04:22.043 回答
0
var whatever =
    from x in something
    select new { yourString = Char.ToString(x.theChar); }
于 2008-09-16T15:49:27.367 回答
0

只需转到设计器窗口并将类型更改为字符串。我一直这样做,因为我发现在我的代码中字符串比字符更容易使用。

于 2008-10-06T05:58:07.060 回答
-1

不知道你为什么要这样做。底层数据类型不能存储多个字符,通过将其表示为字符串变量,您需要在提交到数据库之前检查长度,如果您保持原样,您只需调用 ToString() char 获取字符串

于 2008-09-16T14:55:42.067 回答