2011-01-24 27 views
9

Tôi đang gặp sự thất vọng nghiêm trọng với các tệp DBML không cập nhật khi tôi thay đổi các thủ tục được lưu trữ của mình.LINQ và lưu trữ thủ tục DBML cập nhật vấn đề

Đây là những gì sẽ xảy ra. Tôi thay đổi thủ tục lưu trữ của tôi. Sau đó tôi xóa thủ tục đã lưu trữ khỏi tệp .DBML và thêm lại nó. Nó cập nhật chính xác trong tệp .DBML nhưng tệp .designer.cs không được cập nhật. Cách giải quyết duy nhất mà tôi tìm thấy là xóa thủ tục đã lưu, sau đó xóa bảng mà thủ tục đã lưu trả về, thêm bảng rồi thêm thủ tục đã lưu trữ (tất cả trong tệp .DBML). Và điều này đôi khi chỉ là lừa.

Có ai khác có vấn đề này không? Chắc chắn có một cách thích hợp hơn để cập nhật các tệp DBML trong Visual Studio 2008?

Cảm ơn trước

+0

Nhà thiết kế hình ảnh DBML rất nhiều thứ "một lần" - không có chức năng cập nhật dưới bất kỳ hình thức nào. Bạn có thể điều tra một công cụ của bên thứ ba như Công cụ DBML bởi Huagati để giải quyết vấn đề này hoặc chuyển sang Entity Framework 4 có hỗ trợ tốt hơn cho việc cập nhật mô hình hiện tại của bạn từ cơ sở dữ liệu khi cơ sở dữ liệu bên dưới thay đổi. –

+0

Tôi biết điều này là cũ, nhưng tôi vấp vào nó ngày hôm nay để tìm hiểu xem hành vi (thêm lớp thiết kế mới) đã được dự kiến. Tại sao không chỉ cắt và dán từ lớp mới được tạo ra đến lớp cũ và sau đó xóa lớp mới được tạo ra. Điều đó giúp mọi thứ được sắp xếp với điều khiển phiên bản của bạn và cung cấp cho bạn lớp học chính xác. – Ron

Trả lời

13

Không có cách nào tệp DBML được cập nhật và khi bạn thay đổi SP.

Tôi có đề xuất để bạn thoát khỏi nó. Đây là những gì chúng tôi đã theo dõi trong các dự án của chúng tôi.

Bất cứ khi nào bạn cập nhật SP của bạn cho dù đó là thông số đầu vào hay đầu ra. Chỉnh sửa tệp dbml dưới dạng tệp xml (bạn có thể sử dụng mở dưới dạng xml chỉ trong VS) và lưu tệp dbml. Điều đó cũng sẽ tự động cập nhật các thay đổi trong tệp designer.cs. Bằng cách này, bạn không phải xóa SP khỏi dbml và thêm lại nó để nhận các bản cập nhật. Mặc dù đây là quá trình thủ công nhưng nó thực sự giúp bạn rất nhiều. Bằng cách này bạn thậm chí có thể sửa đổi tên thực thể (để tuân thủ quy ước đặt tên thực thể của bạn) cho đầu ra bạn nhận được từ SP vì những tên mặc định này giống với tên SP.

+3

Lưu ý: Để Visual Studio tái tạo tệp _designer.cs_ bạn ** phải ** chỉnh sửa tệp _dbml_ dưới dạng XML từ bên trong Visual Studio (nhấp chuột phải vào Solution Explorer và chọn _Open With ..._). Chỉnh sửa/lưu nó trong một trình soạn thảo văn bản riêng biệt không dẫn đến tái tạo tệp _designer.cs_. –

+0

Tôi đã chỉnh sửa với trình soạn thảo văn bản trong VS 2012 với thành công. –

1

1 lưu ý rằng SQL và VS hoàn toàn là 2 dịch vụ riêng biệt. nó chỉ kết nối với nhau, không có nghĩa là nó đồng bộ với nhau.

2 Theo ý kiến ​​của tôi, DBML chỉ là ms-sql. tôi sử dụng để tạo DB Factory hoàn toàn hoạt động dựa trên các giao diện và trả về dữ liệu như DataTable ot DataSet. Mã này có thể sử dụng cho tất cả db chuẩn.

4

enter image description here một điều nữa những gì tôi đã làm là, đã mở trình khám phá máy chủ từ chế độ xem. ở đó nó sẽ liệt kê các kết nối db. có phải bấm vào đó kết nối cụ thể mà điểm đến cơ sở dữ liệu của bạn và làm mới. Nếu bạn đã thêm bất kỳ thủ tục được lưu trữ mới hoặc nếu bạn đã cập nhật bất kỳ thủ tục nào, nó sẽ tự động được cập nhật.

0

Cũng trong Entity Framework 6, đây là một vấn đề. Xóa các phần tử đã thay đổi trong tệp .edmx và "Mô hình cập nhật từ cơ sở dữ liệu".

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