Tôi đang sử dụng EF6 để lưu trữ các phiên bản của lớp report
trong cơ sở dữ liệu của tôi. Cơ sở dữ liệu đã chứa dữ liệu. Nói rằng tôi muốn thêm một tài sản để report
,Di chuyển mã đầu tiên: Cách đặt giá trị mặc định cho thuộc tính mới?
public class report {
// ... some previous properties
// ... new property:
public string newProperty{ get; set; }
}
Bây giờ nếu tôi đi đến các gói quản lý giao diện điều khiển và thực hiện
add-migration Report-added-newProperty
update-database
tôi sẽ nhận được một tập tin trong thư mục '/ Migrations' thêm một newProperty
cột vào bảng. Điều này hoạt động tốt. Tuy nhiên, trên các mục cũ hơn trong cơ sở dữ liệu, giá trị cho newProperty
bây giờ là một chuỗi rỗng. Nhưng tôi muốn nó được, ví dụ, "cũ".
Vì vậy, câu hỏi của tôi là: Làm cách nào để đặt giá trị mặc định cho thuộc tính mới (thuộc bất kỳ loại nào) trong tập lệnh di chuyển (hoặc ở nơi khác)?
Sẽ được tốt đẹp nếu nó kéo đúng trong [DefaultValue (xyz)] thuộc tính như đã định nghĩa trong mô hình mã đầu tiên. Thay vì phải nhớ những cột nào cần gì mỗi khi bạn thêm di chuyển; phải chỉnh sửa tệp đã tạo, tiếp theo là hoạt động bình thường của Update-Database dựa vào tệp đã thay đổi đó. Tôi tự hỏi nếu có thể ghi đè hành vi không thông minh đó ... Tôi không thể tin rằng không có ai cải thiện điều này. Chắc chắn tôi không phải là người duy nhất thất vọng bởi điều này với mô hình định danh AspNet mặc định ... LockoutEnabled, EmailConfirmed, AccessFailedCount. tất cả các lỗi, tất cả các vấn đề – Barry
Điều này dường như không hoạt động với MySQL-EF. 'defaultValue' không đặt giá trị và 'defaultValueSql' tạo một ngoại lệ ("hình khối văn bản blob hoặc cột json không thể có giá trị mặc định") ... cách duy nhất còn lại là sử dụng SQL thô. :( – Efrain