当对存储过程使用Linq to SQL时,必须将char(1)列作为c#字符返回吗?

时间:2020-03-05 18:56:12  来源:igfitidea点击:

当使用Linq to SQL和存储过程时,为描述proc的结果集而生成的类将使用char属性来表示SQL proc中的char(1)列。我宁愿这些都是字符串,是否有任何简单的方法可以实现这一目标?

解决方案

回答

不知道为什么要这么做。基础数据类型不能存储一个以上的char,通过将其表示为字符串变量,我们需要在提交db之前检查长度,就好像我们将其保留一样,也可以只对ToString()进行调用。字符获取字符串

回答

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

回答

我们可以修改{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);

回答

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