2012-04-23 10 views
2

現在、EF Code-Firstを使用しています。データベースの多くのテーブルのSELECTデータを使用したいと思います。このクエリはカスタマイズ可能なクエリであるため、どのような種類のデータを取得するのか予測できません。SQL Serverからすべての値を文字列として取得する

最初にctx.Database.SqlQuery<string>(sql, param)を実行しようとしたときに、DateTimeの値に向いているときに例外が発生しました。私はサーバー側でそれをキャストせずにこれをしたいと思います。

どのように私はそれを行うことについて行くことができます誰か考えがありますか? LINQ、LINQ-SQL、または純粋にSQLにすることができます。みんなありがとう...

答えて

1

あなたはそれを取得しません。 Linq-to-entitiesは文字列のリストへの変換を行いません。あなたのベストチャンスは、通常のクエリを実行し、あなたのアプリケーションを変換して変換することです。

ユーザが選択する列がわからないという議論は、よりダイナミックなソリューションが必要であることを意味しています.Lineq-to-entitiesはあなたにとって最適なツールではありません(Dynamic Linqを使用したり、 。 ESQLまたはSQLを直接使用してください。

+0

最高の解決策ではありませんが、私が行ったことに従って、convert(nvarchar(500))をあらゆる価値に加えました。ありがとう! :) – matt

0

多くのテーブルからデータを選択するとき、あなたは新しいエンティティにこれらのテーブルから選択するプロパティ(フィールド)をカプセル化するanonymous typesを使用して、のようなもの:あなたが達成することができます

var query = _db.Categories.Join(
_db.Products, 
c => c.CategoryId, 
p => p.CategoryId, 
(category, product) => 
    new 
    { 
     ProductName = product.Name, 
     CategoryName = category.Name, 
     ExpiryDate = product.ExpiryDate 
    }); 
+0

私は実際にクエリから何を得ているのかわかりません。決定するのはユーザーの責任です。つまり、SELECT [Product]。[Product] [Name]、それ以外のときはSELECT [Product]。[ExpiryDate]となります。私はちょうどクエリからリストを取得したいと思います。ありがとうございました – matt

0

このようにしてデータフィールドを文字列にキャストして、文字列の値を返します。

var query = _db.Categories.Join(
_db.Products, 
c => c.CategoryId, 
p => p.CategoryId, 
(category, product) => 
    new 
    { 
     ProductName = product.Name.toString(), 
     CategoryName = category.Name.toString(), 
     ExpiryDate = product.ExpiryDate.toString() 
    }); 
+0

私は本当に私がクエリから得ているか分かりません。決定するのはユーザーの責任です。つまり、SELECT [Product]。[Product] [Name]、それ以外のときはSELECT [Product]。[ExpiryDate]となります。私はちょうどクエリからリストを取得したいと思います。ありがとうございました – matt

関連する問題