質問: @guid; ``` しかし、 `CAST`パートを生成する方法が見つかりませんでした。私はもう試した: 1. `(Guid)user.GuidText` 、コンパイラエラーを生成します。 2. `Convert.ToGuid(user.GuidText)`ですが、このメソッドは存在しません。 3. `Guid.Parse(user.GuidText)` 、これにより、LINQクエリの変換時にEntity Frameworkでエラーが生成されます。 4. `new Guid(user.GuidText)` 、Entity FrameworkによってLINQクエリの変換時にエラーが生成されます。 5. `(Guid)Convert.ChangeType(user.GuidText, typeof(Guid))` 、これにより、LINQクエリを変換するときにEntity Frameworkでエラーが生成されます。 6. `SqlGuid.Parse(user.GuidText)` 、これにより、Entity FrameworkはLINQクエリを変換するときにエラーを生成します。 どうすればこれを達成できますか?最後の手段としてSQLにコードを埋め込むつもりです。
回答: EFランタイムは実際に文字列からGUIDへの変換をキャスト操作としてサポートしていますが、現時点では私たちがサポートしているLINQでこれを表現する方法はありません。 私が考えることができる最善の回避策は、Entity SQLを使用することです。 ``` var objectContext = ((IObjectContextAdapter)db).ObjectContext; var query = objectContext.CreateQuery( "SELECT VALUE u FROM Context.Users AS u WHERE CAST(u.GuidText AS System.Guid) = @guid", new ObjectParameter("guid", guid)); ```