Hai mẹo quan trọng nhất:
[1] - Đảm bảo rằng dự án của bạn được xây dựng hoàn chỉnh trước khi bạn chạy lệnh giàn giáo mới.
Nếu không thì...
- Bạn sẽ bắt đầu viết một dòng mã.
- Bạn sẽ nhận ra rằng một cột DB bắt buộc bị thiếu trong mô hình của bạn.
- Bạn sẽ cố gắng dựng lên nó.
- Hai mươi phút sau, bạn sẽ nhận ra lý do mà lệnh xây dựng (và lệnh giàn giáo) của bạn không thành công là vì bạn thực sự có một nửa dòng mã được viết. Giáo sư!
[2] - Kiểm tra kiểm soát nguồn hoặc tạo một bản sao:
- Cho phép bạn dễ dàng xác minh những gì đã thay đổi.
- Cho phép khôi phục nếu cần.
Bạn có thể gặp một số vấn đề 'gà và trứng' rất khó chịu nếu bạn không may mắn hoặc mắc sai lầm.
Các vấn đề khác:
Nếu bạn có nhiều DLL, hãy đảm bảo rằng bạn không tạo ra dự án sai . Thông báo 'Xây dựng không thành công' có thể xảy ra vì nhiều lý do, nhưng điều ngớ ngẩn nhất sẽ là nếu bạn chưa cài đặt EFCore trong dự án mà bạn đang tham gia.
Trong bảng điều khiển trình quản lý gói có một Default project
menu thả xuống và đó có thể là nơi các tệp mới của bạn đã kết thúc nếu bạn bỏ lỡ một thay đổi dự kiến.
Một giải pháp tốt hơn so với việc nhớ đặt danh sách thả xuống là thêm công -Project
tắc vào lệnh giàn giáo của bạn.
Đây là lệnh đầy đủ tôi sử dụng:
Đối với EF Core 2
Scaffold-DbContext -Connection "Máy chủ = (cục bộ); Cơ sở dữ liệu = DefenderRRCart; Bảo mật tích hợp = True; Trusted_Connection = True;" -Provider Microsoft.EntityFrameworkCore.SqlServer -OutputDir RRStoreContext.Models -context RRStoreContext -Project RR.DataAccess -force
Đối với EF Core 3
dotnet ef dbcontext angle "Server = tcp: XXXXX.database.windows.net, 1433; Initial Catalog = DATABASE_NAME; Persist Security Info = False; User ID = USERNAME; Password = PASSWORD; MultipleActiveResultSets = False; Encrypt = True; TrustServerCertificate = False ; Thời gian chờ kết nối = 30; " Microsoft.EntityFrameworkCore.SqlServer -o DB.Models --context-dir DB.Contexts --context RRDBContext --project RR.EF.csproj --force --use-database-names
Lưu ý: -force sẽ ghi đè lên các tệp nhưng không xóa những tệp không tồn tại nữa. Nếu bạn xóa các bảng khỏi DB của mình, bạn phải tự xóa các tệp thực thể cũ (chỉ cần sắp xếp trong Explorer theo ngày và xóa các tệp cũ).
Tham khảo đầy đủ giàn giáo:
EF Core 2:
https://docs.efproject.net/en/latest/misready/cli/powershell.html#scaffold-dbcontext (cái này
EF Core 3:
https://docs.microsoft.com/en-us/ef/core/mischarge/cli/dotnet