मैं डोमेन संचालित डिजाइन priciples का उपयोग कर अपने एएसपी.नेट एमवीसी ऐप को फिर से लिखने पर काम कर रहा हूं। मैं अपनी उपयोगकर्ता इकाई को प्रमाणित करने की कोशिश कर रहा हूं। अब तक मैं बुनियादी नियमों को सत्यापित करने में सक्षम हूं (जैसे उपयोगकर्ता नाम और पासवर्ड एक गैर शून्य/सफेद स्थान स्ट्रिंग है)। हालांकि नियमों में से एक, मुझे यह सुनिश्चित करना होगा कि उपयोगकर्ता नाम अद्वितीय है। हालांकि मुझे ऐसा करने के लिए डेटाबेस इनरॉर्डर तक पहुंच की आवश्यकता है, जिसका अर्थ है कि मुझे अपनी उपयोगकर्ता इकाई में अपनी IUserRepository इंजेक्ट करना होगा।डीडीडी डोमेन मॉडल कॉम्प्लेक्स प्रमाणीकरण
public class User
{
private readonly IUserRepository _userRepository;
public User(IUserRepository repo)
{
_userRepository = repo;
}
public override void Validate()
{
//Basic validation code
if (string.IsNullOrEmpty(Username))
throw new ValidationException("Username can not be a null or whitespace characters");
if (string.IsNullOrEmpty(Password))
throw new ValidationException("Password can not be a null or whitespace characters");
//Complex validation code
var user = _userRepository.GetUserByUsername(Username);
if (user != null && user.id != id)
throw new ValidationException("Username must be unique")
}
}
हालांकि ऐसा लगता है ... ठीक है। मेरी इकाई को मेरी भंडार पर निर्भर करना एक बुरा विचार जैसा लगता है (अगर मैं गलत हूं तो मुझे सही करें)। लेकिन इकाई में सत्यापन कोड होने से समझ में आता है। जटिल सत्यापन कोड डालने का सबसे अच्छा स्थान कहां है?
यह भी देखें [यह उत्तर] (http://stackoverflow.com/a/9676307/706456) – oleksii