Tôi đến đây từ một liên kết trong xét của bạn về khác nhau question, nơi bạn hỏi:
bạn nói rằng mã đầu tiên & cơ sở dữ liệu đầu tiên là "kỹ thuật có thể" bạn có thể giải thích như thế nào để đạt được điều đó?
Đầu tiên, ngữ cảnh của câu hỏi khác hoàn toàn khác. OP đã hỏi liệu có thể sử dụng cả hai phương pháp cơ sở dữ liệu-đầu tiên và mã-đầu tiên trong cùng một dự án, nhưng quan trọng, không nhất thiết phải cùng bối cảnh. Tôi nói rằng đó là "kỹ thuật có thể" áp dụng cho các cựu, không phải sau này. Hoàn toàn không có cách nào để sử dụng cả hai mã đầu tiên và cơ sở dữ liệu đầu tiên trong cùng một ngữ cảnh. Trên thực tế, để cụ thể hơn một chút, giả sử không có cách nào để sử dụng cơ sở dữ liệu hiện có và cũng di chuyển cùng cơ sở dữ liệu đó với các thực thể mới.
Thuật ngữ bị nhầm lẫn một chút ở đây do một số tên không may của Microsoft khi EF được phát triển. Ban đầu, bạn chỉ có Model-first và Database-first. Cả hai đều sử dụng EDMX. Sự khác biệt duy nhất là Model-first sẽ cho phép bạn thiết kế các thực thể của bạn và tạo ra một cơ sở dữ liệu từ đó, trong khi Database-first lấy một cơ sở dữ liệu hiện có và tạo các thực thể từ đó.
Với EF 4.1, Mã đầu tiên được giới thiệu, loại bỏ hoàn toàn EDMX và cho phép bạn làm việc với POCO (đối tượng lớp cũ đồng bằng). Tuy nhiên, mặc dù tên, Code-first có thể và luôn có thể làm việc với một cơ sở dữ liệu hiện có hoặc tạo một cơ sở dữ liệu mới. Code-first, sau đó thực sự là Model-first và Database-first, kết hợp, trừ đi EDMX khủng khiếp. Gần đây, nhóm EF cuối cùng đã tiến một bước xa hơn và không dùng EDMX hoàn toàn, bao gồm cả phương pháp Model-first và Database-first. Đó là không được khuyến nghị để tiếp tục sử dụng một trong hai điểm này và bạn có thể mong đợi hỗ trợ EDMX được giảm hoàn toàn trong các phiên bản tương lai của Visual Studio.
Với tất cả những gì đã nói, hãy tìm hiểu sự thật.Bạn không thể vừa có cơ sở dữ liệu hiện có vừa là một cơ sở dữ liệu được quản lý bởi EF trong một ngữ cảnh duy nhất. Bạn sẽ ít nhất cần hai: một cho các bảng hiện có của bạn và một cho những người được quản lý bởi EF. Thêm vào vấn đề này, hai bối cảnh này phải tham chiếu đến các cơ sở dữ liệu khác nhau. Nếu có bất kỳ bảng hiện có nào trong cơ sở dữ liệu được quản lý bởi EF, EF sẽ cố gắng loại bỏ chúng. Dài và ngắn, bạn phải tách riêng công cụ quản lý EF khỏi công cụ được quản lý bên ngoài của bạn, có nghĩa là bạn không thể tạo khóa ngoài giữa các thực thể trong một ngữ cảnh và một thực thể khác.
Tùy chọn thực sự duy nhất của bạn ở đây là chỉ cần thực hiện mọi thứ "cơ sở dữ liệu đầu tiên". Nói cách khác, bạn sẽ phải xử lý cơ sở dữ liệu của bạn như hiện tại và tự tạo các bảng mới, thay đổi các cột, vv mà không cần phải di chuyển EF. Về vấn đề này, bạn cũng nên đi trước và đổ EDMX. Tạo tất cả các thực thể của bạn dưới dạng POCO và chỉ cần vô hiệu hóa bộ khởi tạo cơ sở dữ liệu trong ngữ cảnh của bạn. Nói cách khác, Code-đầu tiên với một cơ sở dữ liệu hiện có. Tôi có additional information, nếu bạn cần.
Tệp EDMX không tạo một lớp học một phần cho ngữ cảnh không? Được một thời gian kể từ khi tôi sử dụng một ... – DavidG
Nó có, nhưng OnModelCreating không nhận được gọi là nếu bạn đang sử dụng EDMX như xa như tôi có thể nói. – randomsolutions
Tôi không nghĩ rằng đây là trường hợp? – DavidG