![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
お世話になります。
VisualStudio2010でASP.NET MVC C#で開発を行っております。
既存のSQLServerのデータベースに対してデータ抽出をするアプリケーションを作成しており、VS2010のテンプレートのLINQtoSQLクラスで自動作成されるコードについての質問です。
手順としては、VS2010で、「新しい項目の追加」→データの「LINQtoSQLクラス」を選択→サーバーエクスプローラーから2つのテーブルをドラッグ&ドロップ しました。
実現したいこととしては、この2つのテーブルに関連付けを設定し、データを参照したいのですが、関連付けを設定して、コードを記述しても参照できなく困っています。
関連付けを行いたいテーブルの状況です。
(1)テーブルA・・・関連付けさせたいカラム(int、Identity(True)、NULL許容(False))
(2)テーブルB・・・関連付けさせたいカラム(int、NULL許容(True))
(3)テーブルAとテーブルBは1対1の関係
VS2010で自動生成されるコードの状況
デザイナ上では、関連付けプロパティにPublicでプロパティが設定されているようになっているのですが、コード見ると下記のように中身がない状態です。
public 関連付けプロパティ名()
{
}
上記のプロパティが働けば、下記のコードで参照できると考えております。
DataContext _context = new DataContext();
A tableA = _context.B.Single(p => p.関連付けキー == 100);
string productName = tableA.関連付けプロパティ名.productName;
参照したいデータのモデルを手作業で記述し、そのモデルをビューに渡せば良いと思うのですが、参照したいカラム数がとても多く、できれば自動生成されるコードで解決できればと思っています。
何か方法や設定があればご教示ください。
よろしくお願いします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
LINQ to SQLを使う場合、DataContext編集画面(LINQ to SQLクラス)で、サーバエクスプローラからテーブルをDrag&Dropしたあと、ツールバーの「関連付け」を使って、2つのテーブル間をPoint&DragToすれば、リレーションが設定されます。
また、SQL Serverのテーブル設計時点で、リレーションが設定ずみならば、最初から両方のテーブルを接合するリレーション・ステムが現れるはずです。
ご提示の条件の場合、リレーションは、デフォルトで 1 to Many の設定になっているため、ステムをクリックしてプロパティを表示し、そこで 1 to 1 に変更します。
また、相互の参照名もここで任意に変更できます。
テーブル名が規定通り(先頭大文字の複数形)であれば、エンティティクラス名も自動的に単数形で定義されるので、たとえば、
会員データ:Members(primary Key:ID unique/not Null)
会員詳細データ:Details(primary Key:ID unique/not NULL foreign key:Members.ID)
であれば、
using(var dc = new HogeDataContext()){
var MemberName = dc.Members.Single(m => m.ID==比較値).Detail.MemberName;
}
で取得できます。
実際には、Members.Single(m => m.ID==比較値).Detail がnullの場合がありますので、もう少し作り込む必要がありますが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQL文(テーブル項目名が特殊文...
-
select文の戻り値を変数に格納...
-
access コンボボックス初期表示...
-
DBの読み込み順について
-
アクセスのデータを編集しなが...
-
ACCESSテーブルを RecordSet以...
-
ASPとAccessとの接続について
-
i=cells(Rows.Count, 1)とi=cel...
-
count(*)で取得した値をJAVAの...
-
ExcelVBAを使って、値...
-
【Excel VBA】先頭の「0」飛び...
-
Excelのプルダウンで2列分の情...
-
array関数で格納した配列の型を...
-
ハイフン(-)が長音(ー)
-
特定のセルが空白だったら、そ...
-
Excelで指定した日付から過去の...
-
【VBA】指定したセルと同じ値で...
-
screenupdatingが機能しなくて...
-
[VBA]改行入りのセルの値を配列...
-
[エクセル]連続する指定範囲か...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQL文(テーブル項目名が特殊文...
-
select文の戻り値を変数に格納...
-
【ACCESS】リレーションを組ん...
-
access コンボボックス初期表示...
-
外部キーのリレーションが設定...
-
DBの読み込み順について
-
VBとACCESSを接続したい
-
ACCESSテーブルを RecordSet以...
-
accessのフォームを使ってテー...
-
HTML&CSS Javascriptによる動...
-
DataGridViewで編集した内容を...
-
ASP.NET:複数結合テーブルのデ...
-
データベースのレコードをform1...
-
テーブルというグローバル変数
-
select文の検索結果と文字列を...
-
ASP(VBScript)で自動連番
-
Windows formアプリで データグ...
-
異なるデータベースでのSELECT ...
-
Perlで変数内の日本語が文字コ...
-
フラッシュの画像を合わせるパ...
おすすめ情報