Đối số của cơ sở được sử dụng DbContext
Hàm tạo
được gọi là nameOrConnectionString
. Do đó, nó hỗ trợ tên của một chuỗi kết nối từ tệp cấu hình hoặc trong trường hợp của bạn là một chuỗi kết nối thực.
Vấn đề với sau này là nó không cho phép chỉ định tên nhà cung cấp như với cái trước đến từ cấu hình, trong trường hợp đó EF sử dụng cái được chỉ định trong defaultConnectionFactory
phần tử cấu hình, trong trường hợp của bạn là System.Data.Entity.Infrastructure.SqlConnectionFactory
nói cách khác - Máy chủ Sql , do đó port
không được hỗ trợ ngoại lệ.
Có một số cách để khắc phục sự cố.
(A) Thay đổi defaultConnectionFactory
cấu hình:
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6"></defaultConnectionFactory>
(B) Sử dụng chuỗi kết nối cấu hình được đặt tên và chỉ định rõ ràng nhà cung cấp:
<connectionStrings>
<add name="MyDB" providerName="MySql.Data.MySqlClient" connectionString="server=myservername;port=3306;uid=myaccount;database=mydb;pwd=mypwd123" />
</connectionStrings>
và thay đổi hàm tạo thành
public MyDB()
{
// ...
}
hoặc nếu tên khác với DbContext
của bạn tên lớp dẫn xuất:
public MyDB() : base(connection_string_name)
{
// ...
}
(C) Sử dụng DbConfigurationTypeAttribute
:
[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class MyDB : DbContext
{
// ...
}