C#と一般的なプログラミング初心者はこちら。
2つのテーブルがあります。プロパティとメモ。1つのプロパティに多くのメモが存在する可能性があります。少なくとも、オブジェクト作成の形式は正しく行われていると思います。私が抱えている問題は、MemoオブジェクトがPropertyオブジェクトと一緒に保存されないことです。Propertyオブジェクトはうまく保存されているようです。
私はスタック初心者なので、画像を投稿に直接投稿することはできません。そのため、エンティティ図と参照制約ダイアログの両方を示すカップルをアップロードしました。
www.jmtland.com/Pics/Diagram.png
www.jmtland.com/Pics/Referential%20Constraint.png
MTDBEntities1 dc = new MTDBEntities1();
Property newProp = new Property();
newProp.Address = t_Address.Text.Trim();
newProp.City = t_City.Text.Trim();
newProp.State = t_State.Text.Trim();
newProp.Zip = t_Zip.Text.ToString();
newProp.PropertyType = cb_PropertyType.Text.Trim();
if (t_SizeMin.Text.Trim().Length != 0) { newProp.SizeMin = Convert.ToInt64(t_SizeMin.Text); } // SizeMin is not required, so it won't be passed to the DB if there is no value.
newProp.SizeMax = Convert.ToInt64(t_SizeMax.Text);
newProp.SizeMetric = cb_SizeType.Text.Trim();
if (t_PriceMin.Text.Trim().Length != 0) { newProp.PriceMin = Convert.ToDecimal(t_PriceMin.Text); } // PriceMin is not required, so it won't be passed to the DB if there is no value.
newProp.PriceMax = Convert.ToDecimal(t_PriceMax.Text);
newProp.LeaseType = cb_LeaseType.Text.Trim();
newProp.WebLink = t_WebLink.Text.Trim();
newProp.Deleted = false;
newProp.DateDeleted = null;
newProp.DateCreated = DateTime.Now;
Memo newMemo = new Memo();
newMemo.Memo1 = t_PropertyMemo.Text.Trim();
newMemo.MemoDateCreated = DateTime.Now;
newProp.Memos.Add(newMemo);
dc.AddToProperties(newProp);
dc.SaveChanges();
私は過去2日間、複数のフォーラムでこの問題の修正を探していました。私は非常に多くの例に従ったので、元のコードをほとんど忘れてしまいました。
気が狂ってすみません。
更新:最初にプロパティテーブルを保存してから、メモテーブルを保存してみました。-どちらも動作しません。
デバッガーを実行しましたが、Memoオブジェクトに関連付けられたデータがあり、Propertyオブジェクトに問題のMemoオブジェクトが含まれているようですが、何らかの理由で同時に保存されません。
プロパティを保存し、新しいクエリを実行してその新しいオブジェクトのPropertIDを取得し、返されたPropertyIDを使用してMemoオブジェクトを強制的に保存するという別の方法についても説明しました。
その方法で私が抱えている問題は、EntityFrameworkの理解が正しくないことを意味するということです。私はおそらくそれを回避することができるでしょうが、最初から正しく動作させることができない場合、同じ技術のその後の実装が、最初から正しくそれを取得できないことによって妨げられるのではないかと心配しています行く。私は以前にプログラミングに手を出しましたが、私が学んだことの1つは、最初に基本を正しく学ばないと、残りの経験が損なわれる可能性があるということです。