2012-04-19 34 views
5

Có nhiều hướng dẫn về API thông thạo, nhưng tất cả đều giải thích nó bằng cách sử dụng Ví dụ về mã khung thực thể - Ví dụ mã đầu tiên. Vì tôi không biết Code-First, bạn có biết bất kỳ hướng dẫn API Fluent nào có thể giải thích chủ đề bằng cách sử dụng phương pháp tiếp cận Cơ sở dữ liệu EF-Đầu tiên không?Bất kỳ hướng dẫn API Fluent nào sử dụng phương pháp Cơ sở dữ liệu EF-Cách tiếp cận đầu tiên để giải thích chủ đề?

Cảm ơn bạn

Trả lời

7

Không có hướng dẫn mà sẽ giải thích API thạo cùng với Database- Cách tiếp cận đầu tiên vì API thông thạo được thực hiện chỉ cho phương pháp Code-First. Bạn không cần Fluent API nếu bạn muốn tạo mô hình của mình thông qua Database-First.

API lưu loát (cùng với chú thích và chú thích dữ liệu mã đầu tiên) là công cụ để xác định chi tiết mô hình trong mã, chẳng hạn như độ dài chuỗi, nếu thuộc tính được yêu cầu hoặc loại mối quan hệ - nhiều - nhiều -to-nhiều, vv Khi sử dụng Database-First hoặc Model-First, tệp EDMX có cùng mục đích - nó chứa tất cả các định nghĩa chi tiết và ánh xạ của mô hình của bạn. API lưu loát (+ chú thích dữ liệu và quy ước) chỉ thay thế tệp EDMX khi sử dụng Code-First.

Nếu bạn tạo mô hình qua Database-First hoặc Model-First, bạn sẽ có tệp EDMX đại diện cho mô hình của mình. Bạn có thể áp dụng T4 DbContext Generator cho tập tin EDMX này. Các tập tin được tạo ra có hai đặc điểm là khác nhau từ Code-First:

  • các chuỗi kết nối được tạo ra có chứa một kh¶o phần để metadata EDMX sẽ được nhúng vào assembly của bạn:

    connectionString="metadata=res://*/Model.csdl 
              |res://*/Model.ssdl 
              |res://*/Model.msl; 
            ..." 
    
  • các tạo ngữ cảnh DbContext sẽ có phương thức OnModelCreating bị ghi đè mà chỉ ném một ngoại lệ:

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
        throw new UnintentionalCodeFirstException(); 
    } 
    

Miễn là bạn để phần siêu dữ liệu trong chuỗi kết nối, EF thậm chí sẽ không gọi OnModelCreating hoặc bất kỳ mã nào trong API thông thạo trong phương pháp này. Phần siêu dữ liệu cho EF biết rằng mô hình của bạn là DB- hoặc Model-First và siêu dữ liệu được định nghĩa trong EDMX được nhúng và không có trong API thông thạo.

Tuy nhiên, bạn có thể xóa phần siêu dữ liệu khỏi chuỗi kết nối, xóa UnintentionalCodeFirstException và viết mã bằng API thông thạo trong OnModelCreating. Bạn có thể làm theo quy trình này để tạo mô hình ban đầu thông qua Database-First và sau đó xây dựng trên mô hình ban đầu này để phát triển hơn nữa với Code-First.

Tại thời điểm này, bạn không còn làm việc với Database-First nữa, nhưng Code-First và mọi thứ bạn đọc về Fluent API đều hợp lệ cho bạn.

+2

Tôi sẽ đánh dấu bài đăng của bạn là đã trả lời sau một hoặc hai ngày kể từ khi bạn đã trả lời câu hỏi gốc của mình, nhưng nếu bạn tìm thấy thời gian - Tôi hiện đang tìm hiểu về DBContext và API xác thực của nó. Dù sao, tôi giả sử API xác thực cũng có thể được sử dụng với cơ sở dữ liệu-đầu tiên, mặc dù Database-First không sử dụng Fluent-API? – user702769

+1

@ user702769: Hm, câu hỏi hay ... Tôi thực sự không biết. Tôi chưa bao giờ sử dụng tính năng xác thực với cơ sở dữ liệu đầu tiên. Có thể hỏi một câu hỏi mới về điều này. – Slauma

+0

sẽ làm điều đó. Cảm ơn bạn rất nhiều vì đã giúp đỡ của bạn – user702769

1

Có một bài đăng thú vị về việc hoàn thành một số mục tiêu "Cơ sở dữ liệu-Thứ nhất" mà không sử dụng phương pháp "Cơ sở dữ liệu-Đầu tiên" thực tế.

http://agilenet.wordpress.com/2011/04/11/entity-framework-4-1-rc-with-an-existing-database/

Tác giả sử dụng “Mã-đầu tiên” và “API thạo”, nhưng vô hiệu hóa tính năng tự động thế hệ và hạt giống của cơ sở dữ liệu và bảng.

Anh ấy chia sẻ một mẫu hiển thị “cách tạo mô hình thực thể, sau đó tạo cơ sở dữ liệu của bạn theo cách thủ công và sau đó ánh xạ các thực thể đó vào cơ sở dữ liệu của bạn. Cuối cùng nó cho thấy bằng cách sử dụng DatabaseContext để lưu và lấy các thực thể ”.

Phần mà anh ta tạo một “lớp cấu hình cho mỗi thực thể ánh xạ giữa thực thể và cơ sở dữ liệu” là khá thú vị. Bước đó thay thế các tập tin “edmx” sẽ được tạo ra khi sử dụng phương thức “Cơ sở dữ liệu-Đầu tiên” chính thức.

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