Tôi đang sử dụng các lớp LINQ to SQL trong một dự án mà thiết kế cơ sở dữ liệu vẫn còn một chút thay đổi.
Có cách nào dễ dàng để đồng bộ hóa các lớp với lược đồ hay tôi cần cập nhật các lớp theo cách thủ công nếu thiết kế bảng thay đổi?
Tôi đang sử dụng các lớp LINQ to SQL trong một dự án mà thiết kế cơ sở dữ liệu vẫn còn một chút thay đổi.
Có cách nào dễ dàng để đồng bộ hóa các lớp với lược đồ hay tôi cần cập nhật các lớp theo cách thủ công nếu thiết kế bảng thay đổi?
Câu trả lời:
Bạn có thể sử dụng SQLMetal.exe để tạo tệp dbml và hoặc cs / vb của mình. Sử dụng một tập lệnh xây dựng trước để khởi động nó và nhắm mục tiêu đến thư mục chứa dự án văn bản dữ liệu của bạn.
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64\sqlmetal.exe
/server:<SERVER>
/database:<database>
/code:"path\Solution\DataContextProject\dbContext.cs"
/language:csharp
/namespace:<your namespace>
Bản thân tôi chưa thử nhưng Công cụ Huagati DBML / EDMX được những người khác khuyên dùng.
Huagati DBML / EDMX Tools là phần bổ trợ cho Visual Studio bổ sung chức năng cho trình thiết kế sơ đồ Linq2SQL / DBML trong Visual Studio 2008 và trình thiết kế ADO.NET Entity Framework trong Visual Studio 2008 SP1. Phần bổ trợ bổ sung thêm các tùy chọn menu mới để cập nhật sơ đồ trình thiết kế Linq2SQL với các thay đổi cơ sở dữ liệu, để đổi tên các lớp và thuộc tính Linq-to-SQL (DBML) và EF (EDMX) để sử dụng quy ước đặt tên .net và để thêm tài liệu / mô tả vào Linq -to-SQL tạo ra các lớp từ các thuộc tính cơ sở dữ liệu.
Đây là một bản sửa lỗi dễ dàng mà không cần bất kỳ phần mềm bổ sung nào, chỉ hoạt động đối với những thay đổi đơn giản (như trường được thêm, một vài bảng, v.v.).
right-click ->
)copy
insert
chúng (xóa các trường đã thay đổi trước)Tôi biết điều đó khá hiển nhiên, nhưng bằng cách nào đó không trực quan, và nó đã giúp tôi rất nhiều, vì tất cả các thuộc tính và loại phù hợp sẽ được sao chép và tất cả các liên kết vẫn nguyên vẹn. Hy vọng nó giúp.
Tất nhiên là - như đã nói - đối với những thay đổi nhỏ, nhưng chắc chắn tốt hơn là thay thế thủ công các bảng có nhiều liên kết hoặc khi bạn không muốn toàn bộ cấu trúc cơ sở dữ liệu của mình được tạo bởi SQLMetal. Ví dụ: khi bạn có một lượng lớn bảng (ví dụ: SAP) hoặc khi sử dụng các bảng được liên kết chéo từ các cơ sở dữ liệu khác nhau.
Tôi nghĩ Jeff đã phàn nàn về điều này gần đây. Một kỹ thuật phổ biến là kéo lại tất cả các đối tượng vào trình thiết kế ...
Tôi hy vọng có người khác sẽ gọi đến với cách tiếp cận tốt hơn!
Tôi đã viết một công cụ để thực hiện thay đổi tập lệnh đối với tập lệnh Dbml, hãy xem http://code.google.com/p/linqtodbmlrunner/ và blog của tôi http://www.adverseconditionals.com
Làm thế nào về việc sửa đổi Thuộc tính của thực thể / bảng trong bề mặt thiết kế DataContext trong Visual Studio?
Ví dụ: nếu tôi đã thêm một cột vào bảng SQL Server:
Các lớp mô hình được tạo tự động phải phản ánh cột mới đã được thêm vào.