हम मौजूदा दुकान के साथ हमारी दुकान पर काम कर रहे इकाई ढांचे को प्राप्त करने की कोशिश कर रहे हैं (और इसलिए, डेटाबेस स्कीमा बदलना एक विकल्प नहीं है), और चीजों का परीक्षण करने के लिए बनाए गए यूनिट परीक्षण कुछ वास्तव में अजीब व्यवहार दिखा रहे हैं। ,इकाई फ्रेमवर्क: जहां यह कॉलम इन कॉलम को प्राप्त कर रहा है?
SELECT
[Extent1].[CommentTypeId] AS [CommentTypeId],
[Extent1].[DataPartId] AS [DataPartId],
[Extent1].[CommentId] AS [CommentId],
[Extent1].[CreatedTime] AS [CreatedTime],
[Extent1].[Message] AS [Message],
[Extent1].[From] AS [From],
[Extent1].[Likes] AS [Likes],
[Extent1].[SourceTypeId] AS [SourceTypeId],
[Extent1].[StatusMessage_DataPartId] AS [StatusMessage_DataPartId],
[Extent1].[Album_DataPartId] AS [Album_DataPartId]
FROM [dbo].[Comments] AS [Extent1]
अंतिम दो कॉलम का अनुरोध किया के रूप में आप देख सकते हैं, दूसरों की तरह नहीं हैं:
यह एसक्यूएल क्या वह किसी विशेष वस्तु है, के लिए बाहर थूक है। ऐसा इसलिए है क्योंकि वे वास्तव में मौजूद नहीं हैं, और हमें नहीं पता कि संस्था उनसे अनुरोध क्यों कर रही है! न तो हमारी विन्यास फाइलें और न ही हमारे पीओसीओ उनमें से कोई उल्लेख करते हैं। वास्तव में, जहां तक हमारा डेटाबेस जाता है, वे पूरी तरह अलग अवधारणाएं हैं और सीधे बिल्कुल संबंधित नहीं हैं।
यह कॉलम कहां से प्राप्त हो रहा है, और मैं इसे कैसे कटौती करने के लिए कहूं?
संपादित करें: नीचे दिए गए कुछ प्रश्नों का उत्तर देने के लिए, 1) हम इकाई फ्रेमवर्क 4.2 का उपयोग कर रहे हैं। हम धाराप्रवाह मैपिंग का उपयोग कर रहे हैं।
2) POCO ही इस तरह दिखता है, समानता गड़बड़ संक्षिप्तता की खातिर बाहर काट के साथ:
public long DataPartId { get; set; }
public string CommentId { get; set; }
public DateTime? CreatedTime { get; set; }
public string Message { get; set; }
public string From { get; set; }
public int? Likes { get; set; }
public string SourceTypeId { get; set; }
public int CommentTypeId { get; set; }
public virtual DataPart DataPart { get; set; }
public virtual CommentType CommentType { get; set; }
3) हम edmx उपयोग नहीं कर रहे। हमारे पास एक कस्टम डीबीकॉन्टेक्स्ट है। ऐसी कई रेखाएं नहीं हैं जो बहुत दिलचस्प हैं। ये दोनों शायद ब्याज की हैं:
Configuration.LazyLoadingEnabled = true;
Configuration.ProxyCreationEnabled = true;
इसके अलावा, प्रसंग फ़ाइल
modelBuilder.Configurations.Add(new WhateverConfiguration())
और
public IDbSet<WhateverPoco> PocoDatabaseTableAccessor { get; set; }
4) का एक बहुत हम साथ db-पहली बार शुरू किया है, लेकिन उस काम नहीं किया, इसलिए हम वर्तमान में कोड-पहले कर रहे हैं।
5) यह है कि विशिष्ट POCO के लिए config की हिम्मत है:
HasRequired (x => x.DataPart)
.WithRequiredDependent (x => x.Comment);
HasRequired (x => x.CommentType)
.WithMany (x => x.Comments)
.HasForeignKey (x => x.CommentTypeId);
HasKey (x => x.DataPartId);
ToTable ("Comments", "dbo");
आप इकाई ढांचे का उपयोग कैसे कर रहे हैं? क्या आप धाराप्रवाह मैपिंग का उपयोग कर रहे हैं, या एडीएमएक्स फ़ाइल का उपयोग कर रहे हैं? क्या आप डिजाइनर में निर्मित रिवर्स एनर्जिंग का उपयोग कर रहे हैं? इकाई ढांचे का क्या संस्करण? क्या आप अपने डेटा मॉडल के प्रासंगिक हिस्सों का एक स्क्रीनशॉट पोस्ट कर सकते हैं? –
मॉडल, पीओसीओ कक्षाएं या कस्टम डीबीकॉन्टेक्स्ट दिखाएं। –
ऐसा लगता है कि वे कोड-पहले उत्पन्न विदेशी कुंजी फ़ील्ड हो सकते हैं। – jrummell