2016-03-29 231 views
2

我正在使用EF來處理數據庫的ASP.NET MVC應用程序。我需要更改一個字符串屬性,該屬性具有StringLength(1000)屬性並被映射到數據庫中的nvarchar(1000)列。更新數據庫和更改模型後的實體框架驗證錯誤

由於最近的需求,我更新了數據庫以使用nvarchar(max),並從模型類中刪除了StringLength(1000)屬性。

問題是。每次我想插入具有此屬性長度大於1000的新實體時,我都會收到驗證錯誤,說它只能包含1000個字符。當它較低時,一切都按預期工作。

該字段必須是字符串或數組類型,其最大長度爲 '1000'。

我不知道這個錯誤來自哪裏。沒有觸發器或存儲過程。我也嘗試使用屬性MaxLengthStringLenght(int.maxInt),但得到了錯誤。也沒有與Fluent API的額外配置。編輯:不幸的是,它看起來不像愚蠢的問題,不重建解決方案。我現在嘗試了兩次(+清理),問題依然存在。

解決方案:所以出於某種原因,在內部使用的項目中存在另一個模型類。它的屬性完全沒有單一屬性。在將MaxLength添加到單個屬性後,它可以工作。

+3

你確定你不只是使用在執行程序集的舊的DLL? –

+1

要麼你沒有清理和重建解決方案,因此正在使用過時的DLL,或者你在其他地方定義了'StringLength(1000)'。 – user1666620

+1

看看這個。可能這會幫助你。 http://stackoverflow.com/questions/5414611/entity-framework-validation-confusion-maximum-string-length-of-128 –

回答

1

鑑於您無法重新生成數據庫,解決方案是實施部分類併爲您的字段使用自定義驗證。它不是那麼幹淨,但它應該工作。

注意:他們可能已經是一個分部類在這種情況下

請參考this MSDN Article