まずはDBを作ります。ShopとCustomerで1:nの関係。 sqlcmd -S .\sqlexpress 接続できたら create database DLinqDemo go use DLinqDemo go create table Shop (ID char(4) primary key, Name nvarchar(10)) create table Customer (ID int primary key identity, ShopID char(4) references Shop(ID), Name nvarchar(20)) go
今後このデータベースが不要になったらsqlcmdで次のコマンドをたたけば消せます。 drop database DLinqDemo 0057562007/09/17(月) 06:21:27ID:??? .NET3.5日本語Beta2だけでやるときは3.5と2.0の両方にパスが通ってなきゃいかんので注意。 Path=C:\WINDOWS\Microsoft.NET\Framework\v3.5;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;%PATH%
static void Cleanup() { using(DLinqDemo dc = new DLinqDemo(conn)) { if (logFlg) dc.Log = Console.Out; dc.ExecuteCommand("delete from Customer", new object[0]); dc.ExecuteCommand("delete from Shop", new object[0]); } } 0060NAME IS NULL2007/09/17(月) 07:10:20ID:??? データの登録。 shop1に対してCostomerを2件。 shop2に対してCostomerを3件追加している。 それぞれ別のやり方で登録してるから見比べて欲しい。
static void DemoAdd() { using(DLinqDemo dc = new DLinqDemo(conn)) { if (logFlg) dc.Log = Console.Out; var shop1 = new Shop() { ID = "A001", Name="WAHAHA" }; shop1.Customer.Add(new Customer() { Name="AAAA BBBB" }); shop1.Customer.Add(new Customer() { Name="AAAA CCCC" }); shop1.Customer.Add(new Customer() { Name="AAAA DDDD" }); dc.Shop.Add(shop1); var shop2 = new Shop() { ID = "A002", Name="UFUFU" }; dc.Shop.Add(shop2); dc.Customer.Add(new Customer() { Name="RRRR BBBB", Shop=shop2 }); dc.Customer.Add(new Customer() { Name="RRRR CCCC", Shop=shop2 }); dc.SubmitChanges(); } }
static void DemoModify() { using(DLinqDemo dc = new DLinqDemo(conn)) { if (logFlg) dc.Log = Console.Out; var qr = from c in dc.Customer where c.Name == "RRRR CCCC" || c.Name == "AAAA CCCC" select c; var rs = qr.ToList(); foreach (var r in rs) { if (r.Name == "RRRR CCCC") r.Name = "YYYY CCCC*"; if (r.Name == "AAAA CCCC") dc.Customer.Remove(r); } dc.SubmitChanges(); } }
長々とすまなかった。以上だ。 0062NAME IS NULL2007/09/22(土) 22:01:44ID:???>>56 デモプログラムサンクス。 ちなみに何処の解説を参考にして書いたの? 0063NAME IS NULL2007/10/04(木) 07:53:43ID:??? sage 0064NAME IS NULL2007/10/22(月) 07:46:22ID:??? sage 0065NAME IS NULL2007/11/08(木) 19:37:33ID:??? さげ 0066NAME IS NULL2007/11/12(月) 23:42:16ID:??? sage 0067NAME IS NULL2007/11/17(土) 18:55:45ID:??? age 0068NAME IS NULL2007/12/02(日) 12:02:39ID:jhMQgNuU age 0069NAME IS NULL2007/12/10(月) 19:31:25ID:7fB17NBW age 0070NAME IS NULL2007/12/11(火) 03:31:57ID:???>>57 リリース版の.NET3.5にsqlmetalが付いて来なくなってる。SDKはまだか。 0071NAME IS NULL2007/12/30(日) 08:54:36ID:??? さて、正式版がリリースされたけど、みんなつかってみた? 0072NAME IS NULL2007/12/30(日) 21:48:37ID:??? ダウンロードしただけ… しかもインストール不可版もダウンロードしてしまった ^^; 0073sage2008/01/03(木) 20:30:05ID:bzPXLKTk ScottGuさんのブログ読みながら、使ってみた。 なかなか使いやすいんではないかな。 0074NAME IS NULL2008/01/26(土) 11:03:58ID:??? 「手っ取り早く LINQ to SQL」の威力を認識するための「テストコード」
手っ取り早く LINQ to SQL を試すためのテストコード - NyaRuRuの日記 ttp://d.hatena.ne.jp/NyaRuRu/20071219/p4 0075NAME IS NULL2008/02/07(木) 01:13:04ID:??? 保守しときますね。 0076NAME IS NULL2008/02/24(日) 18:20:19ID:??? 保守 0077NAME IS NULL2008/03/09(日) 10:20:50ID:??? マ板に統合した方が言いのかな? っていうか、何でDB板は全体的に過疎ってるんだ? 0078NAME IS NULL2008/03/14(金) 21:03:18ID:Img3hY0C LINQ to SQL はみなさん思い思いにSQL発行しまくって 完全な無法地帯になりそうで危険な悪寒… あとSQLが自動生成されると、パフォーマンスチューニングがしづらそうだが 本当に大丈夫か? 0079NAME IS NULL2008/03/21(金) 07:54:16ID:axh5x7MB ウィザードによって生成されたSQLって、 自分の思い通りじゃなかったりするもんな。 で、結局は信頼性に欠けるということで、 自分で手修正してることはあるな。 だから俺はまだLINQそのものを使ってないな。 0080NAME IS NULL2008/04/04(金) 00:46:03ID:??? age 0081NAME IS NULL2008/04/05(土) 00:22:42ID:???>>78 O/Rの出力SQLを例と見ると・・・ 0082NAME IS NULL2008/04/30(水) 20:13:18ID:??? 保守 0083NAME IS NULL2008/05/02(金) 22:11:55ID:???>>77 そもそも対象になる製品が限られている=ユーザー数の裾野が狭い っていうのと学生はデータベース触らない っていう2ちゃん的に盛り上がれる要素が少ないからだと思われ
ム板みたいに速度チューンネタや言語速度比較みたいなのも データベースの場合は「場合による」で終わっちゃうし それにみんな本当はDBあまり好きじゃないんだ・・・・趣味でやるほどには・・・・ 0084NAME IS NULL2008/05/03(土) 23:06:16ID:??? なるほどね。 確かにデータベースは余り面白くないものかも。 AccessやLAMPが出るなどして、スタンドアロンでも出来るようになって 大分一般的なものになってきたように思うんだけどな。 まだまだなのかな。 0085NAME IS NULL2008/05/03(土) 23:12:10ID:??? 仕事で触るの好きだけど 家ではディスクのインデックスでも作っといてって感じだな 0086NAME IS NULL2008/05/04(日) 12:17:22ID:??? おまらDBの世界に足突っ込んだきっかけ何? 0087NAME IS NULL2008/05/26(月) 00:16:16ID:YQBkMqiw DB Magazine 誌 2008/07 に LINQ 記事↓ 特別企画『マイクロソフトの最新統合クエリ言語「LINQ」を試す』 0088NAME IS NULL2008/06/17(火) 08:09:51ID:???>>86 先輩や先生の関係かな。 ま、半ば選択の余地がなくて強制って感じw
凄く嫌だとか抜け出したいとかは思ったことは無いけれど。 0089NAME IS NULL2008/08/13(水) 21:52:29ID:??? 保守しときますね 0090NAME IS NULL2008/08/13(水) 22:48:00ID:??? ありがとう 0091NAME IS NULL2008/08/13(水) 23:27:42ID:98mcGyPk Linqは何かのついでに使うことはあっても、 あらたまってこれについて語れって言われても思い浮かばないんだよな。 それはそうと、 .NET 3.5 SP1でADO.NET Entity Frameworkが追加になってけどどうよ? 0092NAME IS NULL2008/08/14(木) 03:49:39ID:??? Linq to SQLとLinq to Entityの住み分けがわからない。 統合するのか、それぞれ存続させるのか? 0093NAME IS NULL2008/08/28(木) 21:11:13ID:??? え?また何か機能追加になったわけ? 0094NAME IS NULL2008/09/09(火) 23:15:07ID:nHQ+Csrx APサーバとDBサーバが別れてたら、 LINQのクエリだと結果集合を毎回APサーバまで引っ張ってくるのか?
一発で絞り込めるクエリにしないと簡単に帯域ぶっちぎって パフォーマンスダメダメになりそうだな。 0095NAME IS NULL2008/09/09(火) 23:18:12ID:??? ( ゚д゚)ポカーン 0096NAME IS NULL2008/09/10(水) 12:00:46ID:??? ( ゚д゚)ポカーン 0097NAME IS NULL2008/09/11(木) 23:01:09ID:??? LINQで実際にSQLが実行されるのは 0098NAME IS NULL2008/10/20(月) 20:02:04ID:??? LINQを真似した仕様を他の言語が作ったりしないのかなぁ 0099NAME IS NULL2008/10/20(月) 21:16:19ID:??? こっちにもちょっと書いてあるけどさ。 ttp://pc11.2ch.net/test/read.cgi/tech/1202568694/
言語仕様としてのサポートが無いと、LINQほどスマートにはいかないよねぇ。 0100NAME IS NULL2008/11/04(火) 02:19:43ID:??? ま、新しい技術だということで、調べはしたけれど、LINQについては 特に急いで習得する必要性がなさそうだと思った。 これで書かれたプログラムを読まなければいけない状況も当分の間は なさそうだしね。
配列のデータを扱う時、DataTableのデータを扱う時、ADO Recordsetで 接続してデータを扱う時は、すべてコードの書き方が異なっているので、 それぞれのやり方を覚えなおすよりも統一した方がプログラマにとっては 助かるので、方向性としてはLINQのようなものになるのは分かるが、 いまはまだVer1なわけなので、さらにまた言語仕様が変わっていくような 気がする。 過去のものを見るとVB.NETそのものが方向性を模索してるようなところが あったしね。オブジェクト指向を強く出してVB6の要素を切り捨てたが、 ユーザがついてこなかったため、VB6よりに作り直したとか。 しばらく様子見かな。 0101NAME IS NULL2008/11/10(月) 23:23:40ID:??? LINQで処理を統一しようという考えは分かるが、 ストアドプロシージャをVBA(Likeな)構文で書けるとか そういう方向の統一性ってないのかなぁ? なんか、ばらばらしとるよな。同じ会社の言語であっても。 買収したんだから仕方が無いという理屈は無しでw 0102NAME IS NULL2008/11/12(水) 21:10:34ID:RK8b64q5 LINQの限界ってあるんですかね? たとえばSQLだと集計と自己結合を駆使して費用の按分処理(端数の補正あり)とかを 6階層ぐらいネストさせれば一発でかけるんですが、 こうゆう処理はとか余裕でできるのかな? 0103NAME IS NULL2008/12/15(月) 01:52:57ID:??? 保守 0104NAME IS NULL2008/12/29(月) 08:00:53ID:??? 保守 0105NAME IS NULL2009/01/04(日) 10:01:38ID:??? LINQの大幅仕様変更は2009-2010あたりに行われるって解釈でおk? これは新たな機能追加ではなく、不評であったため、改めるというやつ。 0106NAME IS NULL2009/01/09(金) 05:06:39ID:???>>102 何をどうしたいのかがわからんが数値処理なんて余裕だろ。 0107NAME IS NULL2009/01/18(日) 23:35:33ID:??? 保守 0108NAME IS NULL2009/02/01(日) 13:52:27ID:??? 保守 0109NAME IS NULL2009/02/08(日) 16:13:19ID:??? ageときます 0110NAME IS NULL2009/02/12(木) 07:40:04ID:??? LINQの次はどんなものが想像できるかな? 0111NAME IS NULL2009/03/04(水) 18:25:38ID:??? LINQって、javaとかに移植されるのかな? その場合、思想だけかな? それとも、MSがモジュール提供かな? 0112NAME IS NULL2009/03/05(木) 02:34:32ID:??? ODBMS規格化界隈ではJavaにLINQ入れてもらうためにJSR書くか〜 なんて話はあったみたいだよ。今どうなっているかは知らないけど。 0113NAME IS NULL2009/03/11(水) 20:26:11ID:??? LINQも大分日本語のドキュメントが出てくるようになったな。 当時見えてなかったモットーや概要が見えてくるようになった気がする。 0114NAME IS NULL2009/04/04(土) 11:32:26ID:??? 特集:C#プログラマーのためのLINQ超入門(前編) LINQ(リンク)の基礎知識 http://www.atmarkit.co.jp/fdotnet/special/cslinq01/cslinq01_01.html
LINQの使い方に限らず、モットーも説明したわかりやすい 解説が出てくるようになったな。 0115NAME IS NULL2009/04/04(土) 21:20:00ID:??? 読んだけど超入門というだけあって初心者向けだね。 わかりやすくて良かったです。 0116NAME IS NULL2009/04/05(日) 16:42:31ID:??? @ITの記事で、LINQのメリットについて書かれている記事があったので、紹介しておく。 http://www.atmarkit.co.jp/fdotnet/csharp30/csharp30_09/csharp30_09_02.html 以下、記事の抜粋 > LINQ to SQLは、SQL Serverの知識を持たずにプログラムを記述可能とする魔法のつえではない。 > LINQ to SQLが常に最も効率的なクエリを生成してくれるわけでもない。 > それにもかかわらず、筆者はLINQ to SQLを「救いの神」と見る。 > その理由は、この構造がアセンブラに対するC言語のはやりとよく似た構造を持っているからだ。 > LINQ to SQLも同様に、支払うものよりも得るものが圧倒的に多いという理由で利用する価値があると考える。
C言語よりも、処理効率の悪いjavaやVBの方が多くつかわれる傾向があるからLINQも 流行るだろうという考え方のようだが、それが出てから一般的に普及するまでに 時間がかかっていることも考えると、「LINQが使える」と言えるようになるまでに まだまだ期間が必要だろうな。M$独自のバージョンアップ&仕様変更も考慮すると、 必ず使えるようになるような代物になるとは限らないとも感じる。 0117NAME IS NULL2009/04/05(日) 21:39:46ID:??? LINQはVB厨には理解できないと思うんだ。 0118NAME IS NULL2009/04/05(日) 22:42:40ID:??? LINQというよりラムダ式が。 0119NAME IS NULL2009/04/05(日) 22:43:44ID:??? Inside LINQ…っというか、Inside ExpressionsみたいなものをPlease Me。 0120NAME IS NULL2009/05/25(月) 20:34:44ID:??? ほしゅん 0121NAME IS NULL2009/07/02(木) 23:37:05ID:pHeJV8Wt 保守 0122NAME IS NULL2009/07/21(火) 14:56:32ID:??? a 0123NAME IS NULL2009/08/02(日) 02:35:12ID:???>>116 筆者は信者みたいなもんだしなぁ・・・ 適材適所だろ 書いてることもこじつけて書いてる感じの部分もあるし
でも、判り易さは認める
まだ案件に2000の可能性とかがある環境で3.5とか使えないし orz 0124NAME IS NULL2009/09/01(火) 20:19:43ID:???>>5を見て俺はいつのまにこのスレに来たのかと思った