Tôi đã thêm EntityFramework.Migrations (Beta 1) vào ứng dụng Code-First hiện tại đang trải qua một số thay đổi (cho cả khả năng di chuyển và tinh chỉnh nhiều hơn các bảng tôi tạo từ API đầu tiên của mã) và chạy vào kịch bản GETDATE().Có thể đặt trường DateTime mặc định thành GETDATE() với Di chuyển khung thực thể?
Tôi đã sử dụng lớp khởi tạo tùy chỉnh trong DbContext của mình để chạy tập lệnh SQL để đặt một số trường và tạo chỉ mục trong cơ sở dữ liệu của tôi. Một số ít các kịch bản lệnh AlterTable của tôi là chính để thiết lập các trường có giá trị mặc định (chẳng hạn như các trường DateTime nhất định được đặt thành GETDATE()). Tôi đã thực sự hy vọng EntityFramework.Migrations sẽ có một câu trả lời cho điều này vì bạn có thể dễ dàng chỉ định defaultValue, nhưng cho đến nay tôi không nhìn thấy một.
Bất kỳ ý tưởng nào? Tôi đã thực sự hy vọng rằng làm như sau sẽ làm việc kỳ diệu. (Đó là 'kỳ lân ma thuật', sau khi tất cả)
DateCreated = c.DateTime(nullable: false, defaultValue: DateTime.Now)
Thật không may, và logic, nó thiết lập giá trị mặc định của tôi đến thời điểm khi lệnh Update-Database
được thực thi.
Tôi không tìm kiếm vào đi vào các lý thuyết xoay quanh' ... bằng cách sử dụng ORM, bạn không nên đặt logic vào cơ sở dữ liệu ... '. Tôi hiểu điều đó. Chỉ muốn chắc chắn rằng không ai ném lại một ví dụ POCO với DateTime.Now trong hàm tạo :) – adammokan
chỉ có một tương tự có thể, và tìm thấy một giải pháp tốt. Hy vọng điều này sẽ giúp: http://stackoverflow.com/questions/9830216/ef-4-3-1-migration-exception-altercolumn-defaultvaluesql-creates-same-default/ –