EF 6 - Cấu hình bằng mã nguồn

Cấu hình dựa vào mã nguồn trong EF 6

Entity Framework 6 đã giới thiệu cấu hình dựa trên mã. Bây giờ, bạn có thể định cấu hình các cài đặt liên quan đến Entity Framework bằng cách sử dụng mã đã được định cấu hình trước đó trong mục <entityframework> của tập tin app.config. Tuy nhiên, app.config được ưu tiên hơn cấu hình dựa trên mã nguồn. 

Hãy xem cách cấu hình dựa trên mã nguồn bằng Entity Framework 6.

Let's see how to implement code-based configuration using Entity Framework 6.

Trước tiên, chúng ta cần tạo một lớp mới dẫn xuất lớp DbConfiguration (System.Data.Entity.DbConfiguration)

public class FE6CodeConfig : DbConfiguration
{
    public FE6CodeConfig()
    {
        //define configuration here
    }
}

Bây giờ, bạn có thể đặt thuộc tính codeConfigurationType trong app.config như hình dưới đây:

<entityFramework codeConfigurationType="EF6DBFirstTutorials.FE6CodeConfig, EF6DBFirstTutorials">
</entityFramework>

Hoặc bạn có thể sử dụng thuộc tính DbConfigurationType trên lớp Context để đặt lớp cấu hình dựa trên mã nguồn:

async query output

Lưu ý: EF không hỗ trợ sử dụng nhiều lớp cấu hình trong cùng một AppDomain. Nếu bạn sử dụng thuộc tính này để đặt các lớp cấu hình khác nhau cho hai contexts, thì xảy ra lỗi ngoại lệ.

Bây giờ, bạn có thể sử dụng các phương thức khác nhau của DbConfiguration trong phương thức thiết lập như hình dưới đây:

async query output

Hãy xem cách sử dụng các cài đặt khác nhau bằng cách sử dụng cấu hình dựa trên mã cũng như app.config.


Cấu hình kết nối mặc định

Sử dụng phương thức SetDefaultConnectionFactory () để cấu kết nối mặc định như SqlConnectionFactory cho SQL Server, như sau.

public class FE6CodeConfig : DbConfiguration
{
    public FE6CodeConfig()
    {
        this.SetDefaultConnectionFactory(new System.Data.Entity.Infrastructure.SqlConnectionFactory());
    }
}

Kết nối mặc định được định cấu hình trong app.config như dưới đây.

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
</entityFramework>