คุณไม่ใช่คนที่ทำให้สับสน :-)
ฉันคิดว่าคำตอบของคำถามขึ้นอยู่กับว่าคุณอยากเป็นคนเจ้าระเบียบมากแค่ไหน
หากคุณต้องการมุมมอง DDD ที่เข้มงวดนั่นจะนำคุณไปสู่เส้นทางเดียว หากคุณมองที่ที่เก็บเป็นรูปแบบที่ช่วยให้เราสร้างมาตรฐานอินเทอร์เฟซของเลเยอร์ที่แยกระหว่างบริการและฐานข้อมูลมันจะนำคุณไปสู่อีกขั้นหนึ่ง
ที่เก็บจากมุมมองของฉันเป็นเพียงชั้นการเข้าถึงข้อมูลที่ระบุไว้อย่างชัดเจนหรืออีกนัยหนึ่งคือวิธีมาตรฐานในการใช้ Data Access Layer ของคุณ มีความแตกต่างบางประการระหว่างการใช้งานที่เก็บที่แตกต่างกัน แต่แนวคิดก็เหมือนกัน
บางคนจะใส่ข้อ จำกัด DDD ในที่เก็บมากขึ้นในขณะที่คนอื่น ๆ จะใช้ที่เก็บเป็นสื่อกลางที่สะดวกระหว่างฐานข้อมูลและชั้นบริการ ที่เก็บเช่น DAL จะแยกชั้นบริการออกจากข้อมูลเฉพาะการเข้าถึงข้อมูล
ปัญหาการใช้งานอย่างหนึ่งที่ดูเหมือนจะทำให้แตกต่างกันคือที่เก็บข้อมูลมักถูกสร้างขึ้นด้วยวิธีการที่ใช้ข้อกำหนด ที่เก็บจะส่งคืนข้อมูลที่ตรงตามข้อกำหนดนั้น DAL แบบดั้งเดิมส่วนใหญ่ที่ฉันเคยเห็นจะมีชุดวิธีการที่ใหญ่กว่าซึ่งวิธีนี้จะใช้พารามิเตอร์จำนวนเท่าใดก็ได้ แม้ว่าสิ่งนี้อาจฟังดูแตกต่างเล็กน้อย แต่ก็เป็นปัญหาใหญ่เมื่อคุณเข้าสู่อาณาจักรของ Linq และ Expressions อินเทอร์เฟซที่เก็บเริ่มต้นของเรามีลักษณะดังนี้:
public interface IRepository : IDisposable
{
T[] GetAll<T>();
T[] GetAll<T>(Expression<Func<T, bool>> filter);
T GetSingle<T>(Expression<Func<T, bool>> filter);
T GetSingle<T>(Expression<Func<T, bool>> filter, List<Expression<Func<T, object>>> subSelectors);
void Delete<T>(T entity);
void Add<T>(T entity);
int SaveChanges();
DbTransaction BeginTransaction();
}
นี่คือ DAL หรือที่เก็บ? ในกรณีนี้ฉันเดาว่ามันทั้งสองอย่าง
คิม