如何在Entity Framework 7中為字符串屬性創建索引


我正在嘗試為Entity Framework 7創建代碼優先模型。我正在使用最近發布的Visual Studio 2015 Beta和以下版本的EntityFramework包(來自我的project.json文件的片段):

"EntityFramework.SqlServer": "7.0.0-beta1",
"EntityFramework.Commands": "7.0.0-beta1",

看起來目前沒有數據註釋可用,我正在使用OnModelCreating覆蓋和最近實現(部分?)遷移來創建我的模型。

目前,主鍵和一對一關係起作用以及為整數類型創建索引。例如:

"EntityFramework.SqlServer": "7.0.0-beta1",
"EntityFramework.Commands": "7.0.0-beta1",

此代碼段會生成以下遷移代碼:

"EntityFramework.SqlServer": "7.0.0-beta1",
"EntityFramework.Commands": "7.0.0-beta1",

但是當我嘗試將索引添加到字符串屬性時,會生成遷移,但是當應用被SQL Server拒絕時,顯然是由於列類型為nvarchar(MAX)。看起來像.Required().MaxLength(100)不會強制生成有限的字符串列類型。雖然有一種方法可以改變列類型,但我似乎找不到通過ModelBuilder調用它的方法:

"EntityFramework.SqlServer": "7.0.0-beta1",
"EntityFramework.Commands": "7.0.0-beta1",

導致的遷移:

"EntityFramework.SqlServer": "7.0.0-beta1",
"EntityFramework.Commands": "7.0.0-beta1",

有沒有辦法在EF7的beta版本中創建字符串屬性的索引?

一般承認的答案

不幸的是,此時(7.0.0-beta1),在確定要使用的列類型時,不會遵守最大長度和列類型元數據。目前,您必須在遷移過程中下拉到原始DDL。

// Add before CreateIndex
migrationBuilder.Sql("ALTER TABLE [Keyword] ALTER COLUMN [Word] nvarchar(4000)");




許可下: CC-BY-SA
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因