2010-06-21 46 views
6

Tôi đang sử dụng Entity Framework 4.0Entity Framework 4.0 Sử dụng Cơ sở dữ liệu Giá trị mặc định

Nhiều bảng của chúng tôi có một cột có tên RowID, được sử dụng bởi DBA để theo dõi nội dung. Cột là NON NULLABLE có giá trị mặc định của cơ sở dữ liệu ánh xạ tới một hàm.

Vấn đề là, Mô hình EDMX yêu cầu thuộc tính này có giá trị trên thực thể, khiến việc xây dựng đối tượng trở nên khó khăn.

Tôi đã đọc nhiều bài đăng về cách tinh chỉnh các tệp EDMX và SSDL theo cách thủ công để thực hiện công việc này. Điều đó là không khả thi cho nhóm của chúng tôi.

Có giải pháp nào tốt hơn cho vấn đề này, ngoài việc đặt cột NULLABLE trong cơ sở dữ liệu? Tôi không quan tâm đến việc lấy lại giá trị, tôi chỉ muốn cơ sở dữ liệu có thể tự thiết lập nó.

Trả lời

2

Nếu RowID không bao giờ cần được đọc hoặc viết trong ngữ cảnh của ứng dụng của bạn thì nó không thuộc về Mô hình thực thể của bạn. Chỉ cần xóa nó khỏi Mô hình thực thể của bạn bằng cách sử dụng Trình thiết kế (Nhấp chuột phải> Xóa) và để cơ sở dữ liệu quản lý nó.

+0

Vấn đề là các ROWID là một FK trên các bảng khác, vì vậy tôi cần để có thể nhận được nó và sử dụng nó khi tạo các đối tượng trẻ em. – ctorx

6

Bạn nên đặt StoreGeneratedPattern = "Tính toán" trực tiếp trong SSDL (XML phía sau Mô hình).

1 - Nhấp chuột phải vào mẫu

2 - Chọn "Open With" => Xml biên tập

3 - Hãy tìm các bản đồ của một trong những bảng bên dưới phần nội dung mẫu

4 - Thêm thuộc tính StoreGeneratedPattern = "Tính toán" vào cột RowID

5 - Thực hiện thay thế toàn cục trên tệp của bạn để mỗi bảng sẽ có định nghĩa RowID với StoreGeneratedPattern = "Computed"

LƯU Ý: Nếu bạn sử dụng Trình hướng dẫn mô hình cập nhật, bạn sẽ cần cập nhật lại XML theo cách thủ công. Đề xuất của tôi: Không sử dụng Trình hướng dẫn hoặc lưu các dòng xml gốc và đã thay đổi thành một tệp văn bản riêng biệt để bạn có sẵn để thay thế toàn cục sau khi chạy thuật sĩ.

Để biết thêm thông tin tham khảo bài viết này: http://msdn.microsoft.com/en-us/library/dd296755(v=vs.90).aspx

+1

Tôi đang sử dụng Entity Framework 5 và khi tôi đặt StoreGeneratedPattern = Computed và sau đó sử dụng trình hướng dẫn "Mô hình cập nhật từ cơ sở dữ liệu ...", trường là * không * đặt lại. – DaveD

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