当对存储过程使用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更易于使用。