問題タブ [many-to-many]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
nhibernate - 多対多の連鎖削除
2 つのクラス間の多対多の関係を定義しました。イベントと人物 (別のデータベース テーブル person_event で定義)。ここで、人を削除したいとします。そのため、イベントに関連するすべての関連付けも person_event テーブルから削除する必要があります。つまり、カスケード ON DELETE が必要です。
シナリオを考えてみましょう:
- "events" テーブルには、id=1、2、3 で識別される 3 つのイベントが含まれています。
- "person" テーブルには、id=4、5 で識別される 2 人の人物が含まれています。
- 1-4、2-4、3-5 などの関連付けを含む「person_event」テーブル
ここで、Hibernate.delete() を使用してイベント 1 を削除するとします。これにより、event1 と関連付け person_event1-4 だけでなく、person4 も削除されます。
問題は、person4 が別のテーブルによって参照され、それが外部制約例外をスローすることです...イベントと関連付け person_event だけを削除するように NHibernate を構成するにはどうすればよいですか?
python - カスタムマネージャーと「スルー」
djangoアプリケーションでは、マネージャーの「add」メソッドをかなり頻繁に使用する多対多の関係があります(つまり、album.photos.add())。
多対多の関係に関するデータを保存する必要があることに気付きましたが、addメソッドを失いたくありません。「through」モデルのすべての追加フィールドにデフォルト値を設定し、どういうわけかaddメソッドを再実装できますか?
カスタムマネージャーについてはよくわかりませんが、それが適切な場所であると思われます。
アップデート:
カスタムマネージャーを読んでいます。多対多フィールドに「through」引数を追加するときに、add / remove / etcが無効にならないようにすることができますか?
誰かがそれを行う方法を知っていますか?
sql - SQL: 多対多テーブル AND クエリ
まず、あいまいなタイトルで申し訳ありません。これ以上のタイトルが見つかりませんでした。
次の構造のテーブルがあります(簡略化):
このテーブルは、多対多の関係を表しています。
たとえば、DeptID 1、2、および 3 に関連するすべての EmpID が必要です。これは AND 関係であり、OR 関係ではないことに注意してください。私の場合、EmpID は 1、2、および 3 以外の追加の DeptID に関連している可能性があり、有効な回答になります。
関心のある DeptID の数が変化します (つまり、DeptID 3 と 5 の両方に関連する EmpID が必要な場合や、DepID 2、3、4、5、6、7 に関連する EmpID が必要な場合があります)。
この問題にアプローチしようとすると、DepID ごとに JOIN を作成するか、DepID ごとにサブクエリを作成する必要があります。これは、テスト対象の DeptID の数ごとに新しいクエリを生成する必要があることを意味します。私は明らかに、パラメーターまたはパラメーターのセットを使用した静的クエリを使用することを好みます。
私は SQL Server と MySQL の両方で作業しています (コードの 2 つのバージョンを並行して開発しています)。
何か案は?
c# - エンティティ キーでエンティティ フレームワークとの多対多の関係を追加/削除する方法は?
私は試した:
例外がスローされる前に attach を呼び出さずに Remove() を使用しようとすると、リレーションは削除されません。
c# - NHibernateの多対多マッピング
NHibernateを使用した多対多のマッピングに問題があります。基本的に、オブジェクトモデルには2つのクラス(ScenarioとSkill)があり、データベースの3つのテーブル(Scenario、Skill、ScenarioSkill)にマッピングされています。SequenceSkillsテーブルは、SKillおよびScenarioテーブルのID(SkillID、ScenarioID)を保持するだけです。
オブジェクトモデルでは、シナリオにはいくつかの一般的なプロパティと、ScenarioSkillsテーブルから取得される関連スキルのリスト(IList)があります。Skillオブジェクトに関連付けられたシナリオのIListはありません。
シナリオとスキルからシナリオスキルへのマッピングは、多対多の関係です。
シナリオ*---*シナリオスキル*---*スキル
これが私が読んだものから使用するための最良のオプションであると信じているので、私はリストをバッグとしてマップしました。マッピングは次のとおりです。
シナリオクラス内
そしてスキルクラス内
スキルを削除しようとした場合を除いて、すべて正常に機能します。ScenarioSkillテーブルのSkillID列に参照制約があるため、削除できません。誰か助けてもらえますか?
C#asp.net3.5WebアプリケーションソリューションでNHibernate2を使用しています。
linq-to-sql - linqtosqlで多対多の関係にあるテーブルに行を挿入する方法
linqtosqlは初めてです。私はデータベーススキーマを持っています。
従業員は複数のチームに属することができ、チームは複数の従業員に属することができます。
だから実際に私は持っています、
従業員テーブル:EmpID(PK)、EmpNameなど。
EmployeesTeamテーブル:EmpID(FK)、TeamID(FK)(これら2つは複合PKを作成します)
チームテーブル:TeamID(PK)、TeamNameなど
EmployeeテーブルとTeamテーブルに行を追加しましたが、EmployeesTeamテーブルに行を追加する方法がわかりません。
ruby-on-rails - Rails の多対多の関係を使用する場合の「NameError: uninitialized constant」
私は次のモデルを持っています:
ただし、この関係を使用すると問題が発生します。Account.first.account_holders は問題なく動作しますが、Account.first.people は以下を返します。
何か案は?
c# - コードで多対多の関係をモデル化する方法は?
データベースに2つのテーブルがあるとします。例:Dog&Bossこれは多対多の関係です。これは、上司が複数の犬を飼うことができ、犬が複数の飼い主を持つことができるためです。私はボビーの所有者ですが、妻もそうです。
しかし、多対多は許可されていないので、ヘルパーテーブルがあります:DogsPerBoss
これをコードでモデル化する方法は?
クラスボスは犬のコレクションを持つことができます。クラスドッグはボスのコレクションを持つことができます。->少なくとも、それは私が思うことです。おそらくもっと良い解決策がありますか?
ヘルパーテーブルにある追加のデータはどうですか?それはdeBossクラスにするべきですか、それともDogクラスにするべきですか?例:ニックネーム(私は犬を「いい子」と呼び、妻は彼を「わんわん」と呼びます)
私の質問がちょっと明確だといいのですが?これを達成するための最良の方法についてのベストプラクティスはありますか?参考までに教えていただけますか?
ORM(NHibernateのような)はオプションではありません。
c# - 多対多の関係で値の配列を検索するにはどうすればよいですか?
私は LINQ to Entity モデルに問題があります。私は C# と LINQ の両方が初めてなので、ご容赦ください。
写真とタグを含むモデルがあり、各写真には多くのタグを付けることができ、各タグは多くの写真に付けることができます。データベースには通常のリレーション テーブルがありますが、オブジェクト モデルでは、picture.tags (リストとして) および tag.pictures (リストとして) として表示されます。検索クエリにはいくつかのタグが含まれており、検索の結果には、検索したすべてのタグ (またはそれ以上のタグ) でタグ付けされたすべての画像が含まれます。検索するタグの数は固定されていません。
どうすればこれを行うことができますか?