2016-01-27 8 views
9

मैं सी # से System.Data.Sqlite 1.0.99 का उपयोग कर रहा हूं, इसके साथ आप ईएफ के साथ डीबी पर कॉल कर सकते हैं।System.Data.Sqlite 1.0.99 guid तुलना काम नहीं करता

var user = context.Users.FirstOrDefault(x => x.Id == userId); //returns null 
//or 
var user = context.Users.Where(x => x.Id == userId).ToArray(); //returns empty array 

मिले कुछ जानकारी है कि इस समस्या को जाना जाता है और यह 1.0.95 में तय किया गया था, लेकिन टूट: जब Guid द्वारा FirstOrDefault का चयन यह null वापसी (लेकिन इस तरह के GUID के साथ पंक्ति डेटाबेस में मौजूद है) मैं इस समस्या का सामना करना पड़ 1.0.97 और में फिर से अगले दो समाधान:

समाधान 1:

Data Source=...;BinaryGUID=True; 

समाधान 2: सेट अगले वातावरण चर (इससे पहले कि आप बनाने के सच करने के लिए कनेक्शन स्ट्रिंग पर BinaryGUID गुण सेट कनेक्शन):

Environment.SetEnvironmentVariable("AppendManifestToken_SQLiteProviderManifest", ";BinaryGUID=True;"); 

समाधान 2 काम करता है, क्योंकि (SQLite साइट से):

AppendManifestToken_SQLiteProviderManifest - इस वातावरण चर [कुछ भी करने के लिए] सेट है, तो यह System.Data द्वारा उपयोग किया जाएगा .SQLite.Linq.SQLiteProviderManifest कक्षा (और सिस्टम। डेटा। SQLite.EF6.SQLiteProviderManifest कक्षा) भविष्य प्रदाता प्रकट टोकन को संशोधित करने के लिए पर्यावरण प्रदाता के मान को मौजूदा प्रदाता प्रकट टोकन, यदि कोई हो, को संशोधित करके संशोधित करने के लिए। आम तौर पर, निर्मित प्रदाता प्रकट टोकन को वाक्य रचनात्मक रूप से सही करने के लिए, परिवेश चर मूल्य [संलग्न करने के लिए] अर्धविराम से शुरू होना चाहिए।

समाधान 1 मेरे लिए काम नहीं करता है, जैसा कि मैं समझता हूं, इसका केवल सिस्टम पर ही प्रभाव होता है। डेटा। SQLite.Linq.SQLiteProviderManifest।

प्रश्न: क्या इस व्यवहार को ठीक करने के लिए कोई समाधान है पर्यावरण वातावरण को सेट न करने के लिए?

+1

मैं पुष्टि करता हूं कि यह अभी भी System.Data.SQLite v1.0.104.0 के साथ एक समस्या है। समाधान 1 काम नहीं करता है, और समाधान 2 काम करता है। मेरी इकाई वस्तु पर आंशिक वर्ग के निर्माता में यह लाइन जोड़ना काम करता है, धन्यवाद! अगर आपको कोई दूसरा समाधान मिल गया, तो कृपया पोस्ट करें, लेकिन अभी के लिए यह काफी अच्छा है। –

+0

मुझे खुशी है कि मेरा प्रश्न/समाधान सहायक था। उत्तर के लिए धन्यवाद! –

उत्तर

संबंधित मुद्दे