मैं इकाई ढांचे का उपयोग कर रहा हूं और कई से अधिक रिश्तों को मॉडलिंग कर रहा हूं।क्या इकाई फ्रेमवर्क का उपयोग करके कई से अधिक तालिकाओं को सीधे संदर्भित करना संभव है, कोड पहले
मैं धाराप्रवाह एपीआई का उपयोग कर दो संस्थाओं के बीच संबंध बनाया है (के उपयोगकर्ताओं और समूहों मान लीजिए):
this.HasMany(t => t.Users)
.WithMany(t => t.Groups)
.Map(
m =>
{
m.ToTable("GroupMembers");
m.MapLeftKey("Group_Id");
m.MapRightKey("User_Id");
});
यह अच्छा काम करता है, लेकिन मैं चाहता हूँ भी GroupMembers तालिका को देख करने में सक्षम हो सीधे। ऐसा करने के लिए, मैं की तरह कुछ है:
[Table("GroupMembers")]
public class GroupMember
{
#region Properties
/// <summary>
/// Gets or sets the group.
/// </summary>
public virtual Group Group { get; set; }
/// <summary>
/// Gets or sets the Id of rht group.
/// </summary>
[Key]
[Column("Group_Id", Order = 1)]
public int GroupId { get; set; }
/// <summary>
/// Gets or sets the user.
/// </summary>
public virtual User User { get; set; }
/// <summary>
/// Gets or sets the Id of the user.
/// </summary>
[Key]
[Column("User_Id", Order = 2)]
public int UserId { get; set; }
#endregion
}
हालांकि, मैं DbContext के आरंभ के दौरान निम्न त्रुटि प्राप्त होगा:
स्कीमा निर्दिष्ट मान्य नहीं है। त्रुटियां: (381,6): त्रुटि 0019: स्कीमा 'डीबीओ' और तालिका 'ग्रुपमेम्बर' के साथ एंटिटीसेट 'ग्रुप यूज़र' पहले ही परिभाषित किया गया था। प्रत्येक EntitySet को एक अद्वितीय स्कीमा और तालिका का संदर्भ लेना चाहिए।
मेरा मानना है कि इस वजह से इकाई की रूपरेखा एहसास नहीं है कि GroupMembers तालिका धाराप्रवाह एपीआई और GroupMembers संस्थाओं तालिका में निर्दिष्ट वास्तव में एक ही में से एक हैं। दूसरे शब्दों में, यदि मैं धाराप्रवाह एपीआई कोड हटा देता हूं जो कई से अधिक रिश्ते का वर्णन कर रहा है, तो मैं डीबीकॉन्टेक्स्ट को प्रारंभ करने में सफलतापूर्वक सक्षम हूं।
क्या मेरे पास कई से अधिक टेबल हो सकती हैं जिन्हें मैं सीधे संदर्भ भी दे सकता हूं?
धन्यवाद। उपयोगकर्ता और समूह दोनों आधार तालिका, प्रिंसिपल से प्राप्त होते हैं, और वहां एक और तालिका है, अनुमतियां, जिसमें उपयोगकर्ता और समूहों दोनों के लिए अनुमतियां होती हैं। इसके लिए LINQ क्वेरी कुछ ऐसा दिखता है: संदर्भ में पी से ।अनुमतियां में शामिल होने p.PrincipalId पर context.GroupMembers में मीटर m.GroupId जहां m.UserId.Equals (principalId) चयन पी मैं काफी यकीन है कि कैसे सीधे GroupMembers तालिका के संदर्भ के बिना कि क्वेरी प्रदर्शन करने के लिए नहीं कर रहा हूँ बराबर होती है। – Eric
@Eric: मैं मॉडल के बारे में अधिक जानकारी के साथ इस के लिए एक अलग सवाल पैदा करने के लिए सलाह देते हैं। – Slauma
@Eric मैं बिल्कुल एक ही समस्या है, यह विसंगत लगता है कि धाराप्रवाह एपीआई केवल पहले से ही मौजूदा – Lu4