实体框架& SQL Compact Edition - 我如何获得ntext?

时间:2011-05-27 09:48:37

标签: entity-framework sql-server-ce ntext

我的问题的答案应该很明显,但我找不到。我有一个有一个表的edmx文件。有一个string类型的字段。 EF总是会为此生成nvarchar(这是预期的那种),但我需要ntext代替nvarchar ,因为4000对我来说太小了。

请告诉我 - 告诉EF生成ntext字段的正确方法是什么?

PS使用实体框架4,SQL CE 3.5

3 个答案:

答案 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; }

}