2011-11-07 32 views
6

Tôi hiện đang học cách tiếp cận thiết kế theo hướng miền để phát triển và sử dụng .NET Domain Driven Design với C# book của Tim McCarthy làm hướng dẫn.Thiết kế Driven và Khung thực thể miền 4.1 (mã đầu tiên)

Cuốn sách này thực sự hữu ích nhưng tôi trở nên hơi khó hiểu khi nói đến việc sử dụng khung thực thể, đặc biệt là phương pháp tiếp cận mã đầu tiên có sẵn trong 4.1.

Dựa trên ví dụ trong sách, cách tiếp cận kiến ​​trúc phân lớp nên có nghĩa là lớp cơ sở hạ tầng không thể thấy mô hình/tên miền. Vì vậy, cách tiếp cận tốt nhất để lập bản đồ tên miền của tôi là gì trong các lớp bối cảnh db (tôi giả định) nên nằm trong lớp cơ sở hạ tầng, mà không làm trái ngược phương pháp lớp?

Có cơ hội tốt Tôi hoàn toàn sai với suy nghĩ của mình vì vậy hãy cho tôi biết khi tôi vẫn đang học!

Rất cám ơn :)

Adam

+1

Nếu bạn đang sử dụng Code-First EF, thì POCO thực sự là mô hình miền của bạn – Didaxis

+0

Yea đó là những gì tôi hiểu, nhưng làm cách nào bạn tham khảo các đối tượng này trên các lớp, cụ thể là cơ sở hạ tầng cho tên miền/mô hình? – adam

+0

Các mô hình của tôi nằm trong thư viện lớp và thư viện kinh doanh tham chiếu đến DLL đó. Tôi khuyên bạn nên đọc một số bài báo về các mẫu Đơn vị công việc và Kho lưu trữ trực tuyến - chúng hoạt động tốt với POCO. Ở đây: http://www.asp.net/entity-framework/tutorials/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application – AFD

Trả lời

7

Vâng ORM nhất của ngày hôm nay, như EF 4.1 và Nhibernate (thông thạo Nhibenrate addon) có thể mô tả các ánh xạ từ POCO để Db bối cảnh thông qua các lớp bản đồ. Các lớp ánh xạ này tốt nhất nên được đặt trong một dự án cơ sở dữ liệu cơ sở hạ tầng, có thể cùng với các lớp cụ thể của phiên ORM.

Sau đó, các lớp miền POCO của bạn phải được đặt trong một dự án miền không nên có bất kỳ tham chiếu nào đến các thành phần hoặc dự án khác. NHƯNG dự án cơ sở dữ liệu cơ sở hạ tầng nên tham khảo miền để các lớp ánh xạ của bạn có thể giải thích cách POCO sẽ được tải từ trạng thái tồn tại lâu dài như thế nào.

Sử dụng nhiều lần tiêm phụ thuộc cùng với khuôn khổ IoC tốt và vững chắc (Lâu đài Windsor ...). Điều này sẽ giúp bạn nới lỏng mọi thứ lên một chút. Nó tốt hơn để phụ thuộc vào một trừu tượng/giao diện hơn là một thực hiện.

Dưới đây là những điều cơ bản http://www.infoq.com/articles/ddd-in-practice

Nhưng điều tốt bạn quyết định đi cho cách tiếp cận Mã đầu tiên. Tôi thực sự khuyên bạn nên tiếp cận nếu bạn có tùy chọn. Nhưng đôi khi khi các hệ thống cũ bị ảnh hưởng, mọi thứ không dễ dàng như vậy.

+0

Cảm ơn Magnus, cái này là cách tiếp cận tôi đã thực hiện - lắp ráp riêng biệt tham chiếu cả miền và các lớp cơ sở hạ tầng! Đã chơi với nó ngày hôm qua, mã đầu tiên có vẻ giống như một tính năng tốt đẹp của EF! – adam

+0

Chúc may mắn adam. Vui lòng hỏi hoặc thảo luận về vấn đề DDD khác trực tiếp với tôi. Tôi luôn thú vị cách mọi người nhìn thấy vấn đề theo những cách khác nhau ... –

+0

Cảm ơn Magnus - Tôi có thêm vài câu hỏi, cách tốt nhất để liên lạc với bạn là gì? – adam

Các vấn đề liên quan