2010-11-17 16 views
1

C# ve genel programlama noobie burada.Linq-> Varlıklar ve yabancı anahtar tablosu sorunu

İki tablom var. Mülkiyet ve Not. Tek bir Mülk için birçok Memo olabilir. En azından bence, nesne oluşturma biçiminin doğru yapıldığını düşünüyorum. Sahip olduğum sorun, Memo nesnesinin Property nesnesiyle kaydetmemesidir. Mülk nesnesi gayet iyi kaydedilmiş gibi görünüyor.


Bir yığın-noobie olduğum için, mesaj içine boğaz görüntüleri açamazsınız, bu yüzden hem benim Varlıkları Şeması ve Referans Kısıtlama diyalog göstermek birkaç yükledim.

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(); 

Ben ettik son iki gündür bu sorunun çözümü için birden fazla forumda arama yapıyordu. Orijinal kodumu neredeyse unuttuğum birçok örneği takip ettim.

Kötülük için özür dilerim.

Güncelleme: Önce Özellik Tablosunu, ardından Not tablosunu kaydetmeyi denedim. -Ya da çalışmıyor.

Hata ayıklayıcısını inceledim ve Memo nesnesiyle ilişkili verilerin yanı sıra, Property nesnesi söz konusu Not nesnesini de içeriyor gibi görünüyor, ancak bazı nedenlerden dolayı aynı anda kaydetmiyor.

Farklı bir yöntemle ilgili, ancak özelliği kaydedebildiğim, daha sonra bu yeni nesnenin PropertID değerini almak için yeni bir sorgu yaptıktan sonra, Memo nesnesini PropertyID döndürme ile zorlamaya çalışıyorum.

Bu yönteme sahip olduğum sorun, Entity çerçevesini anlamamın doğru olmayacağı anlamına geliyor. Muhtemelen etrafımdaki yolumu kestirebilirdim ama eğer baştan itibaren düzgün bir şekilde çalışamazsam, aynı teknolojinin daha sonraki uygulamamın, onu doğrudan elde edememden korktuğumdan korkuyorum. gitmek. Önceden programlamaya başladım ve öğrendiğim bir şey, temelleri ilk defa öğrenmezseniz, tecrübelerinizin geri kalanı bozulabilir.

+0

- Geçen çizgi dc.Properties.AddObject (newProp) olması gerektiğini düşünüyorum? 'SaveChanges()' başka bir yerde aradınız mı? Onu burada görmüyorum. – BeemerGuy

+0

C/p ve dc.SaveChanges(); kod bloğu haline getirmedi. Hemen altında. – Josh

+0

Oh boşver, orada var; Lütfen kod bölümünün içinde olduğundan emin olun. – BeemerGuy

cevap

0

RPM1984'den gelen yorum işe yaramış görünüyor. Neyi denediğimin üzerinde çalıştığını bilmiyorum ama her ne olursa olsun, şimdi bir sonraki 4 saatlik programlama bloğuma tek bir yönteme geçebilirim!

size EDMX üzerinde varlık "Mülkiyet" konulu "Notlar" adlı bir seyir özelliğine var mı? RPM1984 5 saat önce

Sen bir veritabanına "save" çalışıyoruz