Có thể tự động tăng một thuộc tính không phải là khóa chính trong Khung thực thể không? Những gì tôi có là một lớp trong đó có một ID, mà còn là một số serial:Thuộc tính tăng tự động không phải là khóa
public class Maintenance
{
[Key]
public int ID { get; set; }
public int GroupID { get; set; }
public int SerialNo { get; set; }
}
Tôi có một chỉ mục trên GroupID
và SerialNo
với một mối quan hệ độc đáo, làm cho nó không thể đối với một nhóm có cùng số serial hai lần .
Điều tôi hiện đang làm là kiểm tra .Max()
cho SerialNo
trong nhóm đó. Tuy nhiên tôi sẽ thích nó nếu số serial có tự động tăng lên. Điều này có thể không?
Tôi đã tìm kiếm giải pháp, nhưng theo tôi hiểu, không thể có 2 cột tăng tự động với khung thực thể và cột tăng tự động sẽ luôn là cột PK.
Có cách nào để đặt tăng tự động hay không, có giải pháp nào tốt hơn cho vấn đề hơn là sử dụng Max()
không? Sử dụng Max()
về mặt lý thuyết có thể tạo ra 2 giá trị giống hệt nhau và sẽ gây ra sự cố khi chương trình cố gắng chèn (vì chỉ mục duy nhất).
Tôi đang sử dụng mã trước.
Để làm rõ: Tôi muốn giữ ID làm khóa chính và tính số sê-ri trong khi chèn.
UPDATE:
Tôi đã cố gắng sử dụng [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
trên SerialNo
mà kết quả trong khuôn khổ tổ chức muốn thay đổi khóa chính vào thuộc tính này. Tôi cũng đã thử [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
, mà cố gắng để chèn NULL vào cột SerialNo
và [DatabaseGenerated(DatabaseGeneratedOption.None)]
cố gắng chèn 0, về cơ bản làm 'không có gì'.
INFO YÊU CẦU:
Đây là một ví dụ của bảng có thể nhìn như thế nào:
|_ID_|_GroupID_|_SerialNo_|
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 2 | 1 |
| 4 | 1 | 3 |
| 5 | 2 | 2 |
Bạn đã tìm thấy một giải pháp cho điều này? Tôi có cùng một câu hỏi/vấn đề ... – Mike
Không, xin lỗi @Mike tôi đã không. Tôi vẫn đang sử dụng '.Max()' –