2008-09-16 3 views
1

Linq to SQLとストアドプロシージャを使用する場合、procの結果セットを記述するために生成されたクラスは、charプロパティを使用してSQLプロシージャのchar(1)カラムを表します。私はむしろこれらの文字列になるでしょう - これを実現させる簡単な方法はありますか?ストアドプロシージャでSQLにLinqを使用する場合、char(1)カラムをc#charsとして返す必要がありますか?

答えて

3

{database} .designer.csファイルを変更できます。私はチェックするのは簡単ではありませんが、かなり単純ですと思います。多くのコードを書き直して、再作成した場合には、再度適用することを忘れないでください。

また、独自のクラスを作成し、選択したクラスで処理することもできます。代わりに、書き込みの後

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); 
    } 
} 

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

あなたが簡単に作成できます。たとえば、LINQ生成されたクラスを与え

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

書き込み

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

なぜそうしたいのか分かりません。基になるデータ型は複数のcharを格納することはできません。文字列変数として表現することで、dbにコミットする前に長さをチェックする必要があります。 charを使用して文字列を取得する

+0

保存するデータが既にストリングの場合、変換は苦労します。 –

+0

ジョナサンのコメントは私の気持ちをまとめています。 EF4では、char(1)フィールドが文字列として渡りますので、MSは明らかに痛みを認識しました。 – marc

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

だけで行きますデザイナーの窓や陳に型を文字列に変換します。文字列がCharよりも使いやすくなることがわかっているので、私はいつもそれを行います。

関連する問題