Hôm nay tôi cũng gặp phải vấn đề tương tự, sự khác biệt là tôi không dựa vào Code First để tạo các bảng cho mình, tôi đang tạo chúng theo cách thủ công khi thực hiện.
Tôi đã làm theo mô tả được cung cấp tại đây và tôi đã gặp phải lỗi tương tự như bạn, tôi đã tạo thủ công trường "Bộ phân biệt" trên bảng của mình và thay đổi loại của nó thành MEDIUMTEXT nhưng nhà cung cấp khẳng định rằng bằng cách nào đó tôi đang cung cấp thuộc tính MaxLength, mặc dù MEDIUMTEXT không có MaxLength như VARCHAR , Tôi cho rằng đây phải là lỗi của nhà cung cấp.
Chà, để giải quyết vấn đề này, tôi đã sử dụng API thông thạo để nói theo cách thủ công tên cột phân biệt (mà tôi chỉ giữ là "Kẻ phân biệt") và các giá trị mà EF sẽ mong đợi từ cột phân biệt, trong trường hợp của bạn, đây sẽ là:
Ghi đèprotected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Vehicle>()
.Map<Car>(m => m.Requires("Discriminator").HasValue("Car"))
.Map<Bike>(m => m.Requires("Discriminator").HasValue("Bike"));
}
Tôi đã thay đổi loại cột phân biệt của mình thành VARCHAR (50) mà không có vấn đề gì rõ ràng, nó đang hoạt động tốt đối với tôi. Giải pháp thay thế cho tôi là chuyển sang một ORM khác, việc này quá nhiều công việc, tôi sẽ đợi các phiên bản tiếp theo của nhà cung cấp MySql và kiểm tra xem họ đã sửa lỗi này chưa, trong khi đó tôi sẽ kiên trì giải pháp này.