2009-05-04 3 views
2

LinQ to SQLを読み込んで、次のような純粋なSQLクエリを理解することは可能ですか?LinQに古典的なSQLクエリを「理解」させることは可能ですか?

SELECT * from myTable 

私の上司は、特定のテーブル内のデータベースに直接純粋なSQLのquerysを書くように頼まと、このテーブルには、例えば、「typeOfSelect」という名前のフィールドを持つことになります。

私のアプリケーションでは、このフィールド "typeOfSelect"を読んで、その意味をLinQに理解させる必要があります。

ありがとうございます!

+0

あなたがしようとしていることについてさらに詳しく説明すると、代替案が存在する可能性があります。 – Craig

+0

私はこれを何度も見てきましたので、私はあなたを選んでいませんが、人々がなぜ頭字語を "LinQ"として大文字にするのか分かりません。頭字語のフルバージョンを「言語統合クエリ」として大文字にしますか? –

+0

あなたのナンセンスな質問... – AndreMiranda

答えて

3

DataContextでExecuteCommandメソッドとExecuteQueryメソッドを使用できます。

var db = new MyDataContext(); 
IEnumerable<Table1> result = db.ExecuteQuery<Table1>("SELECT * FROM Table1"); 
db.ExecuteCommand("UPDATE Tabel1 SET Column1 = 'Foo'"); 

ExecuteQueryは、テーブルの列名と一致するプロパティ名を持つオブジェクトで動作します。 ExecuteCommandは、結果セットを返さないSQLコマンドに使用されます。

もう1つの方法は、DbCommandオブジェクトを返すDataContextに対してConnection.CreateCommand()メソッドを使用することです。次に、実行するSQLでCommandTextプロパティを設定するだけです。

DbCommand command = myDataContext.Connection.CreateCommand(); 
command.CommandText = "SELECT * FROM Table1"; 

try { 
    command.Connection.Open(); 
    DbDataReader reader = command.ExecuteReader(); 
    // do something usefull with the reader like creating a DataTable 
} finally { 
    command.Connection.Close(); 
    command.Dispose(); 
} 

このMSDNリンクを見ると、他のいくつかの例があります。

+0

ありがとうウィリアム!私はあなたが私に言ったことをチェックします! – AndreMiranda

2

SQLを書きたい場合は、いくつかのラッパークラスを作成するだけで簡単にこのようなことを書いてください。

DataTable result = DBManager.Query("SELECT * FROM Table"); 

しかし、私は、これは一般的に任意のより良い方法を考えられているとのLINQの目的を台無しにしてしまうとは思いません。

+0

sqlcommandオブジェクトを使って、このようにするのが一番簡単な方法です。 –

2

LINQは、Microsoftがサーバーアクセステクノロジをより一般的な移植可能な技術と区別するための手段です。プログラマーが「Microsoft Way」を簡単に実行できるようにすることで、競争優位を獲得できます。 LINQは、リレーショナルデータベース(主要な宛先であり、競争が非常に薄い場所)を越えて適用可能で、ユニバーサルクエリ構文であると確信したら、言語の完全な管理を維持することに強い関心がありますインフラストラクチャの残りの部分で最も効果的です)。

「リーキーアブストラクション」のコンセプトがどれだけうまく出ているかをここで確認します。マイクロソフトは確かに、業界の最高の考えであると私は思っているが、多くの人々がかなり賭けている。しかし、これは100%コミットメントです。

これは、SQLを使用してISAMクエリを表現できるかどうかを尋ねるようなものです。そして、かつてはIBMがSQLクエリー・インフラストラクチャーを、同様に半独占的な方法で推進していたと聞いたことがあります。

+0

これは逆ではありませんか?問題は、独自のlinqの代わりにSQLを使用する方法を尋ねることです。 – Andomar

+0

彼は、SQLを実行する手段としてLINQを使用したいとし、LINQの代わりにSQLを使用しないと言います。 – dkretz

関連する問題