मैं अपने DAL परत के लिए Linq2Sql उपयोग कर रहा हूँ और मैं एक अलग परियोजना के रूप में यह है। मेरे डोमेन प्रोजेक्ट में मेरे पास एक रिपोजिटरी इंटरफ़ेस है जिसे मैं अपने डीएएल प्रोजेक्ट में एक कस्टम लिंक 2 स्क्लकर कैरपोजिटरी का उपयोग करके कार्यान्वित करता हूं, यह कक्षा जेनरेट लिंकक 2 एसक्यूएल कक्षाओं को लपेटती है।
उदाहरण के लिए। Car.Core परियोजना
public interface ICarRepository
{
IQueryable<Car> GetAllCars();
void Add(Car);
}
में मैं तो इंटरफ़ेस जो उत्पन्न Linq2Sql वर्ग की पहुंच ऊपर लपेटता के एक कार्यान्वयन है।
Car.Data परियोजना
public class SqlCarRepository : ICarRepository
{
private CarDataContext _context;
public SqlCarRepository()
{
_context = new CarDataContext();
}
#region ICarRepository Members
public IQueryable<Car> GetAllCars()
{
return _context.Cars;
}
मैं तो एक परीक्षण परियोजना Car.Data.Test जो तब mocks का उपयोग करता है दूर ICarRepository और परीक्षण उपहास करने के लिए किया है। मुझे लगता है कि आप जो वर्णन कर रहे हैं उससे थोड़ा अलग है। लेकिन मुझे लगता है कि आप कोशिश करना चाहते हैं और अलग करना चाहते हैं कि आप अपने आवेदन से डीएएल हैं, इसलिए यह एक परिधीय है जिसे आप चाहते थे तो बाहर कर दिया जा सकता है।
मैं नहीं मिला है सब पूरी तरह से हल कर, लेकिन मैं वर्तमान में इन परियोजनाओं है:
Car.Core --- All the interfaces and domain objects, DTO's etc
Car.Core.Tests --- The tests of the core business logic.
Car.Web --- Asp.net MVC frontend
Car.Web.Tests --- Tests for the website
Car.Data --- The Linq2Sql stuff lives in here
Car.Data.Tests --- The tests for the DAL layer
है यही कारण है कि हालांकि यह अब काम करने के लिए सबसे अच्छा तरीका नहीं हो सकता है क्या मैं इस समय मिल गया है।
मैं The Onion Architecture के माध्यम से पढ़ने की सिफारिश करता हूं और प्रेरणा के लिए MVC StoreFront वीडियो देख रहा हूं; सौभाग्य।
मैंने पढ़ा "अगर मैं डेटा लेयर प्रोजेक्ट बनाता हूं तो क्या मैं अपने सभी रिपो को उस प्रोजेक्ट में भी ले जाऊंगा?" जैसा कि आप पहले से ही नीचे दिए गए उत्तरों में सुझाए गए रिपोजिटरी पैटर्न का उपयोग कर रहे हैं, लेकिन जाहिर है कि आपको अपने कुछ परीक्षणों में कुछ प्रकार के डेटाबेस एक्सेस भी करना है? आम तौर पर इसका मतलब यह होगा कि आप वास्तव में लिंक से एसक्यूएल का परीक्षण कर रहे हैं, जो मुझे उम्मीद है कि माइक्रोस्कोफ्ट इंजीनियरों ने पहले ही किया होगा।जेसन जोन्स के आलेख में वर्णित अनुसार, मैं आपको उन तरीकों से बचने के लिए सलाह दूंगा, और मेमोरी कॉन्टेक्स्ट बैकएंड के साथ अपने रिपॉजिटरीज़ का परीक्षण करूंगा। – AHM