मजाक में मैं निम्न विधि है:तुलना बाइट [] में LINQ करने वाली एसक्यूएल और एक इकाई परीक्षण का उपयोग करता है कि
User IDataContext.AuthenticateUser(string userName, string password)
{
byte[] hash = PasswordHasher.HashPassword(userName, password);
var query =
from e in mContext.GetTable<User>()
where e.Email == userName && e.Password == hash
select e;
return query.FirstOrDefault();
}
जब mContext
एक System.Data.Linq.DataContext
सब कुछ अच्छा काम करता है है। हालांकि, जब mContext
मेरे एकजुट परीक्षण के दौरान एक इन-मेमोरी मैक है, तो e.Password
और hash
के बीच तुलना हमेशा false
लौटाती है।
अगर मैं e.Password.SequenceEqual(hash)
के रूप में इस तुलना को फिर से लिखता हूं, तो मेरे यूनिट परीक्षण पास हो जाएंगे, लेकिन जब मैं LinqToSql से बात कर रहा हूं तो मुझे अपवाद मिलता है। (System.NotSupportedException: क्वेरी ऑपरेटर 'SequenceEqual' समर्थित नहीं है।)
क्या कोई तरीका है कि मैं यह प्रश्न लिख सकता हूं जो मेरे यूनिट परीक्षणों को इन-मेमोरी मैक के साथ-साथ उत्पादन घटक के साथ संतुष्ट करेगा LinqToSql?
+1 - मैं शुरुआत में उसी तरह की चीज कर रहा था लेकिन तब मुझे एहसास हुआ कि मैं आईओ को * 1 * अनुरोध को कम कर सकता हूं और नियमित LINQ के साथ पासवर्ड की तुलना कर सकता हूं। – TheCloudlessSky