2015-04-26 22 views
8

Do sự hiện diện của type providers để truy cập dữ liệu SQL trong F #, không có nhiều tập trung vào việc sử dụng ORM, vi mô hay cách khác. Tôi chắc chắn có thể thấy logic đằng sau điều này. Có vẻ như nhiều ví dụ về việc sử dụng F # để chơi với dữ liệu quan hệ là cắm chúng vào cơ sở dữ liệu lớn hiện có, có vẻ như được tạo ra ở nơi khác.Quản lý lược đồ SQL trong F #

Có vẻ như có một chút khoảng trống ở đây: có cách nào tốt để quản lý việc tạo và di chuyển lược đồ trực tiếp từ F # không? Ví dụ được liên kết ở trên đề xuất chạy tập lệnh tạo giản đồ thủ công của bạn làm bước đầu tiên. Đây có phải là lựa chọn duy nhất không?

Gần đây tôi đã bắt đầu một dự án nhỏ là F # ngay từ đầu và tôi đang xem xét lưu trữ một số dữ liệu trong cơ sở dữ liệu quan hệ (hiện tại là sqlite). Tôi không có một lược đồ hiện có để khám phá, tôi đang thiết kế từ đầu. Có một cách thân thiện hơn hoặc thành ngữ hơn để quản lý lược đồ của tôi (tạo và sau đó di chuyển) trong F #?

Trả lời

4

Bạn/có thể/sử dụng Khung thực thể với F # và do đó nhận được API di chuyển đi kèm, nhưng tôi thấy rất đau đớn trong thực tế - tất cả các lớp thực thể của bạn sẽ yêu cầu thuộc tính phong cách member val get set (tôi tin) và khác nhau bit và miếng. Jamie Dixon đã đăng một bài đăng trên blog vào một vài tháng trước đây vào khoảng thời gian tôi đã thử nghiệm nó - tôi không thích nó!

Thành thật mà nói, mặc dù đây không phải là câu trả lời tuyệt vời cho bạn khi bạn yêu cầu quản lý lược đồ DB trong F # - Tôi khuyên bạn nên sử dụng một thứ như VS Database Projects để quản lý lược đồ của bạn bên ngoài và sử dụng (yes) một trong các Nhà cung cấp Loại SQL để quản lý dữ liệu trong ứng dụng của bạn.

Nếu bạn đã chết bằng cách sử dụng hệ thống "di chuyển giản đồ trong mã", EF phát tốt hơn nhiều với C# trong kinh nghiệm của tôi, vì vậy bạn có thể thử nghiệm về mặt lý thuyết với ví dụ: một dự án truy cập dữ liệu C#/EF được tham chiếu bởi mã ứng dụng F # của bạn.

Rất tiếc.

+0

Tôi thậm chí còn không nghĩ đến việc di chuyển, ngay bây giờ thậm chí tôi chỉ tò mò về việc tạo các đối tượng cơ sở dữ liệu. Tôi đã đi xuống một con đường tương tự như bạn đề nghị, mặc dù trong trường hợp của tôi đã cố gắng ServiceStack.Ormlite. Đối với việc hỗ trợ phương ngữ một mình nó có vẻ giống như một đầu tư 'dư thừa' đáng giá. –

+0

Xin lỗi - khi tôi nói "di chuyển" tôi đã đề cập đến khả năng của EF để tạo một lược đồ SQL dựa trên một tập hợp các mối quan hệ OO. –

+0

Ồ, ý bạn là 'di chuyển cấu trúc lớp thành định nghĩa lược đồ', không phải 'di chuyển giản đồ cơ sở dữ liệu phiên bản 1 đến 2'? Không vấn đề gì. Dù bằng cách nào, tôi đã hy vọng tôi có thể tuôn ra một 'hey kiểm tra này đăng bài blog tuyệt vời/gói nuget', nhưng nó âm thanh như thế chỉ cần không tồn tại. –

0

Tôi đã cố gắng tìm một giải pháp cho điều này và tôi ngày càng có xu hướng cố gắng quay trở lại những điều cơ bản khi nói đến cơ sở dữ liệu SQL. Một trong những phần chính được mô tả trong cuốn sách Refactoring Databases là di chuyển. Có một công cụ hỗ trợ làm việc với di chuyển giải quyết rất nhiều vấn đề miễn là bạn có thể chấp nhận để viết tất cả các kịch bản lên và xuống trong đồng bằng ol 'SQL có lẽ sẽ rất phù hợp.

Một công cụ tôi đã tìm thấy cho ngăn xếp .NET là Roundhouse của Rob Reynold. Tôi vẫn chưa thử nhưng có vẻ hứa hẹn mặc dù có phần ngày.

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