C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: LINQの O/R で作成した継承クラスにデータを読込む方法


(過去ログ 45 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■24166 / inTopicNo.1)  LINQの O/R で作成した継承クラスにデータを読込む方法
  
□投稿者/ たこやき (7回)-(2008/08/28(Thu) 16:37:15)

分類:[.NET 全般] 

C#2008で、「LINQ to SQLクラス」の
オブジェクト・リレーショナル・デザイナ(O/Rデザイナ)で
テーブルを表示させ、それを継承させたクラスを作成し、
データソース構成ウィザードでオブジェクトを選択してデータソースを作りました。
それをフォーム上にドラッグ&ドロップしたところ、自動的に、myDataGridView と myBindingSource と myBindingNavigator が作成されたのですが、データを表示させることができません。どうすればいいのでしょうか。LINQ to Object を調べたのですが、どうもわかりません。どうかヒントを下さい。

引用返信 編集キー/
■24208 / inTopicNo.2)  Re[1]: LINQの O/R で作成した継承クラスにデータを読込む方法
□投稿者/ 片桐 (107回)-(2008/08/29(Fri) 11:43:05)
仕様背景がわからないのでなんともなんですが、
そもそも、その継承して作ったクラス、継承しないといけない理由があるんでしょうか。
自分でオリジナルの関数とか作りたいってだけならPertialクラスにしておいても良いんじゃないかなぁなんて思ったので。
Inherits関係でなく、Pertial関係にしておいたら今の継承元をそのまま通常通りの手順で使えるとおもうのですけれど。


引用返信 編集キー/
■24236 / inTopicNo.3)  Re[2]: LINQの O/R で作成した継承クラスにデータを読込む方法
□投稿者/ たこやき (9回)-(2008/08/29(Fri) 17:45:52)
片桐さん、ご返信ありがとうございます。
> 仕様背景がわからないのでなんともなんですが、
ド素人なので考え方が間違っているのかも知れませんが、データベースのテーブルにフラッグ列を設けたいのですが、テーブル自体にフラッグ列を設けると全データの書換えが発生し、同時使用者に影響が出ると思うのです。それで、O/Rデザイナにある継承を用いてフラッグ列を作成すると、データベースのデータは一切変更されないのでいいかな?って思った次第です。

> Inherits関係でなく、Pertial関係にしておいたら今の継承元をそのまま通常通りの手順で使えるとおもうのですけれど。
partial については、解説に「大規模なプロジェクトや、Windows フォーム デザイナ で自動生成されるコードを処理する場合に役立ちます。」とあるように、小規模なプロジェクトには全く必要のないものだと思っていたので、その効果がよくわかっていません。どうもすみません。

O/Rデザイナで簡単に継承オブジェクトが作れるので、データの呼び込みも簡単にできそうに思うのですが……、よろしくお願いします。
引用返信 編集キー/
■24250 / inTopicNo.4)  Re[3]: LINQの O/R で作成した継承クラスにデータを読込む方法
□投稿者/ たこやき (10回)-(2008/08/30(Sat) 13:38:01)
自己解決しました。継承させたところでデータ自体は親の分しかないので、
親で必要データを選択して、それをBindingSourceにセットしました。
みなさん御迷惑おかけしました。

private void button1_Click(object sender, EventArgs e)
{
myDBDataContext dc = new myDBDataContext();
var aa =
from p in dc.親TBL
where p.FLD.Length<3
select p;
myBindingSource.DataSource = aa;
}
解決済み
引用返信 編集キー/
■24276 / inTopicNo.5)  Re[4]: LINQの O/R で作成した継承クラスにデータを読込む方法
□投稿者/ たこやき (11回)-(2008/08/31(Sun) 18:10:29)
おわび。
初心者なんでわかっていませんでしたが、DataContextやLINQが
従来に変わる新技術なのかと思い、そっちを優先して勉強していましたが、
どうもそれは間違いのようです。
DataSetを利用してTableに列を追加すれば、LINQが気持ちよく
使えました。くだらん質問をしてすみませんでした。

僕のような人がいるかもしれないので、蛇足ですが参考までに記載します。
※ド素人なのでこれもあてになりませんのでご注意を。

@「新しい項目の追加」でmyDataSetを 作成し、
A「サーバーエクスプローラー」からテーブルをドラッグする。
Bそのテーブルにフラッグ列を加える。
Cそうして作成した「データソース」をフォーム上にドラッグして
myDataGridViewを作成し、以下のコマンドを実行すれば
フラッグした行のみが抽出できます。

private void button1_Click(object sender, EventArgs e)
{
DataTable dt = myDataSet.Tables["myTBL"];
var aa =
from p in dt.AsEnumerable()
where p.Field<bool>("my旗") == true
select p;
myBindingSource.DataSource = aa;
}


引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -