Webサービスで文字列としてGUIDを渡そうとしていますが、路面ではバンプが発生しました。 GUIDはUNIQUEIDENTIFIER
としてSQL Serverに格納され、EFはGUIDとしてプルします。GUIDをエンティティフレームワークを使用した文字列に変換する
var query = myEntities.Foo.Where(q => q.Id== Id)
.Select(bar =>
new Bar()
{ BString = bar.GUID }
);
さて、C#は、あなたがstring
にSystem.Guid
を変換することができないビルドエラーがスローされますので、私はあなたがこれを行うことができると思うだろう:
{ BString = bar.GUID.ToString() }
私は何をしたいと思うことは、これを行う私のクエリであります
あるいは
{ BString = Convert.ToString(bar.GUID) }
しかし、実行時例外と両端:
例外がありました。System.NotSupportedExceptionでした:LINQ to エンティティが 'System.String ToString(System.Object)'メソッドのメソッドを認識せず、このメソッドをストア式に変換することはできません。
だから私は両方のケースで、それはUniqueIdentifier
からvarchar
に行くのT-SQLの同等を把握することができないことを集めます。
オブジェクトを取得するだけでなく、各オブジェクトを新しいオブジェクトにコピーして、その時点でguid-> stringを変換する私のリターンセットを反復する方法がありますか?
ありがとうございました。
これは回避策です。バータイプにGuidを文字列として返すプロパティがある場合、Linqクエリでこのプロパティを使用してください – Beatles1692
ラムダステートメントが実行された後のクエリの値は何ですか? – MethodMan