【发布时间】:2014-03-29 13:58:21
【问题描述】:
我有一个实体框架模型(类),我想将它用作关键字段的字符串属性。我试过这样定义属性:
[IndexAttribute("SourceText", IsUnique=true)]
public string SourceText { get; set; }
这会导致 SQL 运行时错误,提示该属性无法用作键字段。我理解为什么,因为唯一键不能超过 8000 个字符,而字符串字段可能比这长得多。那么,有没有办法告诉 EF 我不需要超过要用作键的字段的前 500 个字符?
【问题讨论】:
-
尝试使用 [Key] 而不是 [IndexAttribute("SourceText", IsUnique=true)]
-
@Robert 你是说你不想在列上指定最大长度,但是为了创建索引,你只想使用列的前 500 个字符,即使它的大小实际上> 500?
-
@Cupcake 是的,如果可能的话。我使用过其他可以做到这一点的数据库框架,所以我希望 EF 6.1 也能做到这一点。
-
@RobertOschler 你确定你对那个解决方案没问题吗?你考虑过including the large string column as part of another index的可能性吗? (我认为这就是这些谈论的内容,但我不确定)。 900 byte index size limit in character length, Create Indexes with Included Columns, Using Included Columns to Avoid Size Limits.
-
@Cupcake 是的,我是。在应用上下文中获得超过 500 个字符的字符串的概率小于 1%,并且截断字符串的后果为零。
标签: c# sql entity-framework indexing