Tôi đang sử dụng mã Khung thực thể đầu tiên. Tôi có một bảng sẽ không vượt quá 100 hàng và tôi muốn sử dụng datatype byte
(tinyint
trong SQL Server) làm khóa chính.Sử dụng byte làm kiểu dữ liệu khóa chính
Đây là những gì tôi có cho đến nay:
[Key]
public byte Id { get; set; }
Vấn đề là khi Entity Framework tạo ra cơ sở dữ liệu, nó không được thiết lập bản sắc bất động sản đặc điểm kỹ thuật cho phép các hàng để tự động tăng trên chèn.
Nếu tôi thay đổi kiểu dữ liệu thành Int16
(smallint
trong SQL Server), mọi thứ hoạt động hoàn hảo.
Có cách nào để nói cho Khung thực thể đặt thuộc tính tăng tự động hoặc có thể sử dụng byte làm khóa chính với mã khung Entity đầu tiên không?
Tại sao bạn hạn chế cơ sở dữ liệu của mình như thế này? Nếu nó chỉ có vài hàng, không gian thêm sẽ không bị tổn thương. – delnan
@delnan, vâng phải, tại sao không làm cho nó một varchar (100) ** ';-)' **. Bạn nên luôn chọn đúng loại dữ liệu hạn chế nhất có sẵn, đặc biệt là đối với PK. Nếu bạn sử dụng PK này như một FK trong một bảng với 50 triệu hàng và thêm một chỉ mục vào nó, sẽ có một sự khác biệt. Kích thước cột ảnh hưởng nhiều hơn không gian đĩa, chỉ cần nghĩ về bộ nhớ cache và bạn lãng phí bao nhiêu cho một lỗi lựa chọn kiểu dữ liệu tầm thường. Ngoài ra, nếu ứng dụng của bạn freaks ra và cố gắng để chèn một giá trị ra hoặc phạm vi, nó sẽ thất bại. –