2012-01-24 30 views
8

Chúng tôi đang cố gắng xây dựng một lớp truy cập dữ liệu để sử dụng cả Oracle và SQL Server (không phải cùng một lúc).Entity Framework Oracle và Sql Server - cách xây dựng một ứng dụng độc lập cơ sở dữ liệu

Chúng tôi sử dụng Mô hình EF đầu tiên để tạo mô hình và tạo tập lệnh SQL để xây dựng cơ sở dữ liệu. Ý tưởng đầu tiên của chúng tôi là tạo 2 tệp EDMX, một cho mỗi loại và sử dụng tệp phù hợp tùy theo nhu cầu của khách hàng. Chúng tôi đang sử dụng luồng công việc tạo cơ sở dữ liệu Oracle và SQL Server và mẫu tạo DDL để tạo các kịch bản lệnh cho từng cơ sở dữ liệu. Vấn đề chính của chúng tôi là khi thay đổi lược đồ cơ sở dữ liệu, chúng tôi không muốn thả và tạo lại DB mà chỉ tạo kịch bản di chuyển để cập nhật cơ sở DB trên mô hình của chúng tôi (khách hàng có nhiều dữ liệu sẽ bị mất).

Chúng tôi sử dụng gói nguồn EF để trích xuất các tập lệnh di chuyển cho SQL Server nhưng không có gì giống với Oracle.

Chúng tôi muốn giúp tìm một lớp dữ liệu tốt (1 EDMX cho cả Oracle và SQL Server nếu có thể và không phức tạp) và cách tốt để tạo các thay đổi cơ sở dữ liệu từ mô hình của chúng tôi để cập nhật DB khách hàng hiện tại trong trường hợp mới bản phát hành ứng dụng

Chúng tôi nhận thấy đây là điểm xuất phát http://msdn.microsoft.com/en-us/data/ff830362 nhưng không đề cập đến hỗ trợ của Oracle.

Chúng tôi đã thử chuyển đổi mã đầu tiên và EF nhưng Oracle lại không thành công trong quá trình tạo và di chuyển DB.

Bất kỳ đề xuất nào về cách chúng tôi có thể thực hiện việc này?

Cảm ơn bạn

Trả lời

4

Không có cách nào để có EDMX đơn cho cả SQL Server và Oracle. EDMX bao gồm ba phần CSDL (định nghĩa đối tượng), SSDL (định nghĩa cơ sở dữ liệu), MSL (ánh xạ giữa các định nghĩa đó). SSDL phải luôn luôn nhắm mục tiêu cơ sở dữ liệu cụ thể, vì vậy bạn cần ít nhất là SSDL riêng biệt cho Oracle và SQL Server và nếu bạn may mắn, bạn cũng sẽ không cần MSL riêng biệt (ánh xạ phải giống hệt nhau, có thể sẽ không xảy ra nếu bạn sử dụng bất kỳ công cụ nào để tạo kho dữ liệu).

Vì vậy, bạn luôn cần ít nhất một phần tệp EDMX cho DB thứ hai và tự duy trì nó.

Nếu bạn cần di chuyển DB hỗ trợ Oracle, bạn phải tìm kiếm công cụ từ Oracle (hoặc bên thứ ba). Ví dụ: RedGate cung cấp các công cụ hỗ trợ di chuyển giản đồ cho cả hai SQL ServerOracle.

Phiên bản Visual Studion Premium và Ultimate cũng cung cấp các công cụ để so sánh lược đồ cơ sở dữ liệu. Nó theo mặc định chỉ hỗ trợ SQL Server nhưng Toad Extensions cũng nên thêm hỗ trợ cho Oracle.

Khi bạn có bất kỳ công cụ nào trong số này, bạn chỉ cần so sánh lược đồ được triển khai trên máy chủ của khách hàng với lược đồ mới của bạn và công cụ sẽ tạo tập lệnh di chuyển cho bạn.

+0

Thanx hơi phức tạp mặc dù có tính độc lập này.Bạn đã bao giờ thử truy cập Open Open ORM của Telerik có vẻ như chúng ta đang tìm kiếm nhiều Cơ sở dữ liệu bao gồm SQL Server và Oracle và nó xử lý Migrations không? – christosst

0

Bài viết hay nhất tôi tìm thấy về chủ đề này là từ Paul Reynolds Blog. Hãy thử đi qua từ phần 5 đến phần 9.

Có rất nhiều gotchas về Oracle được đề cập ở đó ... rất hữu ích!

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