[英]Is there a way to restrict value of a column in Entity Framework?
我想限制實體框架中實體的屬性值。
例如:
public class Position: EntityBase
{
[AnAtribute("Values:1,2,3")]
public int Status { get; set; }
public string ReferenceCode { get; set; }
public string Location { get; set; }
public string Content { get; set; }
}
值也可以來自枚舉。
在此表中,“ Status
列可以具有值; 1,2或3.否則EF會拋出異常。
我可以制作Status
表並定義所有狀態。 但我不想每次都加入那張桌子。 所以這不是一個選擇。
使屬性為Enum並定義該枚舉。
public enum Status
{
SomeStatusA = 1,
SomeStatusB = 2,
SomeStatusC = 3,
}
public class Position: EntityBase
{
public Status Status { get; set; }
public string ReferenceCode { get; set; }
public string Location { get; set; }
public string Content { get; set; }
}
您還可以在狀態表(您提到有一個)上添加外鍵約束 ,這會阻止您在命中數據庫時添加/更新超出范圍的狀態值。
你需要的是CHECK CONSTRAINT 。 在SQL中,您可以通過這種方式更改表
ALTER TABLE Position
ADD CONSTRAINT CK_Position_Status CHECK (Status IN (1, 2, 3))
EF目前不支持。 即沒有一些屬性或配置允許您生成具有檢查約束的表或更改現有表。 但您可以在遷移中手動添加此類約束:
migrationBuilder.Sql(@"ALTER TABLE Position
ADD CONSTRAINT CK_Position_Status CHECK (Status IN (1, 2, 3))");
另外我建議您使用枚舉而不是整數作為狀態字段(如果可能的話)。 因此,沒有人會“猜測”哪些值應該是有效的,哪些值不是。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.