1 名前:デフォルトの名無しさん mailto:sage [2016/07/10(日) 00:34:49.34 ID:2YnnBC7F.net] 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。 他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください >>980 を踏んだ人は新スレを建てて下さい。 >>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■前スレ ふらっと C#,C♯,C#(初心者用) Part121 echo.2ch.net/test/read.cgi/tech/1465958068/ ■関連スレ C#, C♯, C#相談室 Part91 echo.2ch.net/test/read.cgi/tech/1467142749/ ■コードを貼る場合は↓を使いましょう。 ideone.com/ https://dotnetfiddle.net/ ■情報源 https://msdn.microsoft.com/en-us/library/gg145045.aspx referencesource.microsoft.com/
1001 名前:デフォルトの名無しさん [2016/07/31(日) 12:21:48.88 ID:9Z6DmbVF.net] 取り合えず立てた人チーすw
1002 名前:デフォルトの名無しさん mailto:sage [2016/07/31(日) 13:03:24.52 ID:4EU300F7.net] 俺も良くわかってないが双方向でリストを持っているときっていつそれぞれのを結びつけるんだ? それとも結びつけなくていいのか Aを追加するときにBは居ないし逆もまた然りって永遠ループが頭の中で続くわ
1003 名前:デフォルトの名無しさん mailto:sage [2016/07/31(日) 13:35:00.89 ID:4EU300F7.net] 書かれていることやろうとしても中間テーブルみたいなのは無理にとおせばできるけど 無限増殖問題か値が入らない問題が起きるぞ なんで >>954 はできるんだ?コードが見てみたいんだが
1004 名前:デフォルトの名無しさん [2016/07/31(日) 13:39:55.24 ID:tdu9NojY.net] >>953 レスを返し忘れていました。 確かに、AはCに対して外部キー設定をしていて、同様の扱いをするのにAはBに対して外部キー設定をしていないので、 そこが怪しい気もします
1005 名前:デフォルトの名無しさん mailto:sage [2016/07/31(日) 13:59:51.45 ID:BZqbbjGS.net] >>986 この辺参考にしたら? www.asp.net/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application
1006 名前:デフォルトの名無しさん mailto:sage [2016/07/31(日) 15:08:27.13 ID:SlcEPNYS.net] そもそも中間テーブルのクラス(エンティティ)は必要なのか? そしてその中間テーブルCに対して、A,Bそれぞれから外部キー制約が必要なのか? NOなら、中間テーブルの作成すらコードファーストで勝手にやらせるだけ YESなら、Aのエンティティが持つのはBじゃなくてCのエンティティ、Bも同様
1007 名前:デフォルトの名無しさん mailto:sage [2016/07/31(日) 15:15:13.16 ID:7sIN5pY9.net] >>990 おっさんなんか勘違いしてないか C has A C has B んでもってA has B, B has A だからCは中間テーブルでないぞ ややこしくあるのはA Bだけでしょ Cは今回出てきてるけどただ持ってるだけで実際関係ないゾ
1008 名前:デフォルトの名無しさん mailto:sage [2016/07/31(日) 15:42:51.77 ID:SlcEPNYS.net] >>991 もともとA,Bで多対多のリレーションって話だったはずなんだが なんか勘違いしてるってなら >C has A >C has B >んでもってA has B, B has A の条件でテーブル定義かエンティティクラスの定義書いてみてくれんかね
1009 名前:デフォルトの名無しさん mailto:sage [2016/07/31(日) 15:59:25.30 ID:SlcEPNYS.net] 埋めるように雑談 EFって、to 0..Nのリレーションはできるけど to 1..N のリレーションは 相手方の1を強制(保障)する方法がない気がするんだが つまり 1..N:1..Nはコードファーストでは実現不可能なんじゃないかと思うんだが
1010 名前:デフォルトの名無しさん mailto:sage [2016/07/31(日) 16:05:53.41 ID:7sIN5pY9.net] >>992 上にもあるけどこうじゃねぇの public class C { public int Id {get;set;} public List<A> a {get;set;} public List<B> b {get;set;} } public class A { public int Id {get;set;} public List<B> ListB {get;set;} public virtual C c {get;set;} public A(){ ListB = new List<B>();} } public class B { public int Id {get;set;} public List<A> ListA {get;set;} public virtual C c {get;set;} public B(){ ListA = new List<A>();} } static void main(){ C c = new C{Id=1} // できるやつ。でもCA、CBの関係はあるけどABの関係がないから値が入らない c.a.ListB.add(new B{Id=1, c=c}); c.b.ListA.add(new A{Id=1, c=c}); // できないやつ。逆も同様 c.a.ListB.add(new B{Id=1, c=c, ListB =???}); }
1011 名前:デフォルトの名無しさん mailto:sage [2016/07/31(日) 16:11:54.97 ID:SlcEPNYS.net] >>994 AがCとListBと両方同時に持ってるのか? Aが直接持つB群と、Cを通じて持つB群と別のものなのか?
1012 名前:デフォルトの名無しさん mailto:sage [2016/07/31(日) 16:22:22.34 ID:7sIN5pY9.net] >>995 同じなんじゃないの それを結びつけようと頑張ってるんだと思う 俺はそう捉えて悩んでる 科目一つに対して講師が複数居る 科目一つに対して生徒が複数居る そんな状況で、講師と生徒を結びつけたいのだと…あれ?ってことはこれ public class C { public int Id {get;set;} public A a {get;set;} public B b {get;set;} } public class A { public int Id {get;set;} public List<B> ListB {get;set;} public virtual C c {get;set;} public A(){ ListB = new List<B>();} } public class B { public int Id {get;set;} public List<A> ListA {get;set;} public virtual C c {get;set;} public B(){ ListA = new List<A>();} } static void main(){ List<C> c = new C(); c.Add(); } こんな感じにしたらシンプルなんじゃないのかこの問題
1013 名前:デフォルトの名無しさん mailto:sage [2016/07/31(日) 16:28:58.96 ID:7sIN5pY9.net] 違うわ シンプルにできん たぶん科目に対して講師及び学生をリストで持ってるんだ そしてそれぞれ講師・学生が持つ要素が同じものを指し示してる そんでもってそれを科目の要素としてそれぞれに追加する時に 片方の要素が存在してないからどうすりゃええの?ってなってんだわきっと
1014 名前:デフォルトの名無しさん mailto:sage [2016/07/31(日) 16:29:55.38 ID:SlcEPNYS.net] >>996 同じなら、AにCとListB両方は同時にいらない。DB的にはあってはいけない だから>>990 は CというエンティティがあればListBはいらない ListBがあれば、Cはいらない という内容のことを言ったつもりなんだが
1015 名前:デフォルトの名無しさん mailto:sage [2016/07/31(日) 16:33:52.27 ID:SlcEPNYS.net] いつのまにか A,Bのリレーションとそのための中間テーブルCっていう話から 講師、学生、科目という三つの実体の話にすり替わってるな 元の要件整理しなおさんと話が進まん
1016 名前:デフォルトの名無しさん mailto:sage [2016/07/31(日) 16:34:43.64 ID:5iBcOCRm.net] じゃあちょっと話を整理してみましょうか
1017 名前:デフォルトの名無しさん mailto:sage [2016/07/31(日) 16:37:40.65 ID:SlcEPNYS.net] これ以上続けるなら次スレで やりたいこととちゃんとしたエンティティの定義出して で、この話題はスレとともに一旦終了
1018 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。 life time: 21日 16時間 2分 51秒
1019 名前:1002 [Over 1000 Thread.net] 2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。 運営にご協力お願いいたします。 ─────────────────── 《プレミアム会員の主な特典》 ★ 2ちゃんねる専用ブラウザからの広告除去 ★ 2ちゃんねるの過去ログを取得 ★ 書き込み規制の緩和 ─────────────────── 会員登録には個人情報は一切必要ありません。 月300円から匿名でご購入いただけます。 ▼ プレミアム会員登録はこちら ▼ premium.2ch.net/ pink-chan-store.myshopify.com/
1020 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています