我的问题的答案应该很明显,但我找不到。我有一个有一个表的edmx文件。有一个string
类型的字段。 EF总是会为此生成nvarchar(这是预期的那种),但我需要ntext
代替nvarchar
,因为4000对我来说太小了。
请告诉我 - 告诉EF生成ntext
字段的正确方法是什么?
PS使用实体框架4,SQL CE 3.5
答案 0 :(得分:3)
我猜你先是使用模特,不是吗?您可以简单地为SQL DDL生成创建自定义T4模板,并包含在使用最大大小定义字段时将使用NTEXT
的逻辑。
默认模板已开启:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\DBGen\SSDLToSQL10.tt
只需复制此模板并找到创建数据类型的逻辑。将模板更改为模型属性(在设计器中)中的DDL生成模板更改为修改后的版本。
带有生成模板的There is much more you can do,因为您可以在模型(XML)中添加一些注释,并在SQL生成过程中将它们用于自定义逻辑。
答案 1 :(得分:1)
只需将Designer中的属性“MaxLength”设置为“Max”即可。这将在SQL CE DB中生成一个ntext字段。
答案 2 :(得分:0)
如果您的项目包含ADO.Net实体数据模型(.edmx
),请参阅Ladislav's excellent answer。
但是,如果您使用代码优先库并且您的项目不包含.edmx
,那么您可以使用System.ComponentModel.DataAnnotations.ColumnAttribute
指定列类型:< / p>
using System.ComponentModel.DataAnnotations;
public class Note {
[Column("Note", TypeName="ntext")]
public string Note { get; set; }
}