
お世話になります。
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ランキング
-
ASP.NET:複数結合テーブルのデ...
-
access コンボボックス初期表示...
-
asp.net MVC
-
select文の戻り値を変数に格納...
-
ACCESSテーブルを RecordSet以...
-
Accessのクエリで、replace関数...
-
VB.NETで DataRow()を利用して...
-
ExcelVBAを使って、値...
-
エクセルで、絶対値の平均を算...
-
[エクセル]連続する指定範囲か...
-
テキストボックスのvalueとtext...
-
ListView 項目の選択/選択解除...
-
Excel vbaで特定の文字以外が入...
-
Excelで指定した日付から過去の...
-
特定のセルが空白だったら、そ...
-
VBAでActiveDirectoryのユーザ...
-
VBA ドロップダウンリストを残...
-
Excel オートフィルタのリスト...
-
Application.Matchで特定行の検索
-
エクセルvbaで、別シートの最下...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSテーブルを RecordSet以...
-
select文の戻り値を変数に格納...
-
【ACCESS】リレーションを組ん...
-
SQL文(テーブル項目名が特殊文...
-
access コンボボックス初期表示...
-
DBの読み込み順について
-
外部キーのリレーションが設定...
-
Delphi BDE 複数ユーザによる...
-
Accessの認証について
-
SQL文なんですが
-
accessのフォームを使ってテー...
-
異なるデータベースでのSELECT ...
-
C# OleDb SQL JOIN すると例外
-
テーブルというグローバル変数
-
DataGridViewで編集した内容を...
-
VBとACCESSを接続したい
-
select文の検索結果と文字列を...
-
ASP.NET:複数結合テーブルのデ...
-
ASP(VBScript)で自動連番
-
ExcelVBAを使って、値...
おすすめ情報