2013-01-17 322 views
2

我想獲得我首先使用EF代碼定義的列的最大長度。我需要確保插入的值不超過最大長度:EF代碼首先訪問HasMaxLength值

this.Property(t => t.COMPANY_ID) 
      .HasMaxLength(30); 

有什麼建議嗎?

+0

如果您使用的是.NET Framework 4.3或更新的內置驗證,應該爲您驗證並在違規情況下拋出異常。這不適合你嗎? – Pawel

回答

1

我明白你的問題的方式,你的真正需要似乎是要確保一個實體的屬性(在這種情況下是COMPANY_ID)不超過一定的最大長度(在本例中爲30)。

而不是像那樣進行手動檢查,您可以考慮使用數據註釋(System.ComponentModel.DataAnnotations和System.ComponentModel.DataAnnotations.Schema),特別是因爲您首先使用代碼。類似這樣的:

public class MyEntity 
{ 
    [MaxLength(30)] 
    public string MyProperty {get; set;} 
    [Column(TypeName="Date")] 
    public DateTime MyDate {get; set;} 
} 

您可以設置不止是最大長度。正如你在上面看到的,你可以指定什麼數據類型應該反映在你的數據庫中。您還可以指定是否需要屬性以及更多屬性。 EF將自動爲您處理此問題,如果您的實體不符合數據註釋設置的標準,將爲您提出例外。如果您使用MVC腳手架,它也可以自動生成驗證,並與您爲實體指定的註釋保持一致。