お世話になります。
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で質問しましょう!
似たような質問が見つかりました
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL MySQLのテーブル作成で 自信がありません。 2 2022/08/28 05:35
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Visual Basic(VBA) ActiveReportのdetailをデータセットの自動バインドを使って帳票を出力しています。 1 2023/08/16 07:16
- IT・エンジニアリング ActiveReportのdetailをデータセットの自動バインドを使って帳票を出力しています。 1 2023/08/16 07:17
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ASP.NET:複数結合テーブルのデ...
-
select文の戻り値を変数に格納...
-
access コンボボックス初期表示...
-
SQL文(テーブル項目名が特殊文...
-
C言語について。
-
ExcelVBAを使って、値...
-
C言語について。
-
i=cells(Rows.Count, 1)とi=cel...
-
特定のセルが空白だったら、そ...
-
Excelのセルの色指定をVBAから...
-
テキストボックスのvalueとtext...
-
VBA:小数点以下の数字を取得で...
-
エクセルVBAでコピーして順...
-
Accessのクエリで、replace関数...
-
count(*)で取得した値をJAVAの...
-
Excelで指定した日付から過去の...
-
表にフィルターをかけ、絞った...
-
UNICODE文字が含まれているかの...
-
VB.NETで DataRow()を利用して...
-
Excel VBA 複数選択したリスト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQL文(テーブル項目名が特殊文...
-
select文の戻り値を変数に格納...
-
【ACCESS】リレーションを組ん...
-
Windows formアプリで データグ...
-
access コンボボックス初期表示...
-
ACCESSテーブルを RecordSet以...
-
DBの読み込み順について
-
外部キーのリレーションが設定...
-
VBとACCESSを接続したい
-
ASP.NET:複数結合テーブルのデ...
-
accessのフォームを使ってテー...
-
アクセスのデータを編集しなが...
-
Delphi BDE 複数ユーザによる...
-
テーブルというグローバル変数
-
ACCESSで伝票をつくる方法
-
フラッシュの画像を合わせるパ...
-
異なるデータベースでのSELECT ...
-
ASPとAccessとの接続について
-
Accessで自作顧客管理ソフト
-
DataGridViewで編集した内容を...
おすすめ情報