इस का उपयोग करें:
public class User
{
public string ID { get; set; }
public string LastName { get; set; }
public string Password { get; set; }
public string FirstName { get; set; }
public Profile Profile { get; set; }
}
public class Profile
{
[Key, ForeignKey("User")]
public int ProfileID { get; set; }
public string ProfileName { get; set; }
public DateTime CreateDate { get; set; }
public DateTime LastUpdateDate { get; set; }
public User User { get; set; }
}
एफई में एक-से-एक संबंध का निर्माण करने की वैध तरीका है कि - निर्भर इकाई के पी भी प्रमुख संस्था के लिए FK होना चाहिए। ईएफ में बिडरेक्शनल एक-से-एक संबंध की तरह कुछ भी नहीं है क्योंकि यह ईएफ में काम नहीं कर सकता है।
जिस तरह से लोग कभी-कभी इसे दूर करते हैं, वे दो-से-कई संबंध होते हैं जहां प्रिंसिपल में निर्भर संस्थाओं के लिए नेविगेशन संग्रह नहीं होता है + डेटाबेस में मैन्युअल रूप से परिभाषित अद्वितीय कुंजी। यही कारण है कि मैनुअल मानचित्रण की आवश्यकता होती है:
public class User
{
public string ID { get; set; }
public string LastName { get; set; }
public string Password { get; set; }
public string FirstName { get; set; }
// one side MUST be nullable otherwise you have bidirectional constraint where each
// entity demands other side to be inserted first = not possible
public int? ProfileId { get; set; }
public Profile Profile { get; set; }
}
public class Profile
{
public int ProfileID { get; set; }
public string ProfileName { get; set; }
public DateTime CreateDate { get; set; }
public DateTime LastUpdateDate { get; set; }
public int UserId { get; set; }
public User User { get; set; }
}
और मानचित्रण में आप परिभाषित करेगा:
modelBuilder.Entity<User>
.HasOptional(u => u.Profile)
.WithMany()
.HasForeignKey(u => u.ProfileId);
modelBuilder.Entity<Profile>
.HasRequired(u => u.User)
.WithMany()
.HasForeignKey(u => u.UserId);
अब आप डेटाबेस में अद्वितीय कुंजी को परिभाषित करना होगा - आप कोड का उपयोग कर रहे हैं पहले custom database initialize आर का उपयोग करें। ध्यान रखें कि अभी भी द्विपक्षीय एक-से-एक गलत अवधारणा है क्योंकि दोनों पक्ष अद्वितीय एफके की मांग करते हैं जहां NULL अभी भी अद्वितीय मानों में शामिल है, इसलिए User
Profile
से पहले User
Profile
के बिना कोई अन्य 0 नहीं होना चाहिए। यह शायद serializable लेनदेन की ओर जाता है।
स्रोत
2011-06-08 08:56:54
आपको क्या त्रुटि है? – Eranga