1

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

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

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

4

3 回答 3

3

我猜你首先使用模型,不是吗?NTEXT您可以简单地为 SQL DDL 生成创建自定义 T4 模板,并包含在字段定义为最大大小时将使用的逻辑。

默认模板开启:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\DBGen\SSDLToSQL10.tt

只需复制此模板并找到创建数据类型的逻辑即可。一旦你有你的模板,将模型属性(在设计器中)中的 DDL 生成模板更改为你的修改版本。

您可以使用生成模板做更多事情,因为您可以向模型 (XML) 添加一些注释,并将它们用于 SQL 生成过程中的自定义逻辑。

于 2011-05-27T10:39:20.017 回答
1

只需将设计器中的属性“MaxLength”设置为“Max”。这将在 SQL CE DB 中生成一个 ntext 字段。

于 2013-08-22T15:33:30.687 回答
0

如果您的项目包含 ADO.Net 实体数据模型 ( .edmx),请参阅Ladislav 的出色回答

但是,如果您使用的是Code First库并且您的项目不包含 a.edmx那么您可以使用System.ComponentModel.DataAnnotations.ColumnAttribute来指定列类型:

using System.ComponentModel.DataAnnotations;

public class Note {

    [Column("Note", TypeName="ntext")]
    public string Note { get; set; }

}
于 2012-03-22T12:26:17.587 回答