如何首先在EF代码中映射Sql server的文本字段类型? [复制]

Posted

技术标签:

【中文标题】如何首先在EF代码中映射Sql server的文本字段类型? [复制]【英文标题】:How do I map text field type of Sql server in EF code first? [duplicate] 【发布时间】:2011-11-13 11:09:35 【问题描述】:

我有一个

1) 我想将其映射到实体框架 4.1 Code First 的 Sql 服务器中的文本字段类型。我该怎么做?

2) 当你在 POCO 类中声明一个字符串变量时,它会映射到 Sql Server 中的 nvarchar。它如何映射到varchar?我很确定我的数据将始终是英语而不是多语言。

提前致谢:)

【问题讨论】:

你能不能只用varchar(max)/nvarchar(max)代替text/ntext?然后问题就消失了...... 确实,text/ntext 已经过时了,您应该考虑迁移到“最大”类型:msdn.microsoft.com/en-us/library/ms187993.aspx 【参考方案1】:

使用这个:

public class Foo

    [Column(TypeName = "ntext")]
    [MaxLength]
    public string TextProp get; set;

这应该在 Sql Server 中创建 ntext 列,而不是 nvarchar。

【讨论】:

ntext 是deprecated in SQL Server 2012。您可以改用 varchar(max) 或 nvarchar(max)。【参考方案2】:

相信你可以用一个属性来指定一列的映射类型——

[Column(TypeName = "text")]
public string TextField  get; set; 

您也可以对 varchar 执行此操作,我发现此博客文章包含将 EF 默认值从使用 nvarchars 交换为 varchars 的代码,但我尚未测试帖子中提供的代码 -

http://johncoder.com/Post/EFCodeFirstDisableUnicodeforallStringProperties

【讨论】:

以上是关于如何首先在EF代码中映射Sql server的文本字段类型? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

EF4 Code First + SQL Server CE:以原子方式保存双向引用

EF 4.3 代码首先在同一类型上映射 N:M

如何编写此扩展方法以由 EF Core 转换为 SQL Server?

如何首先在 Entity Framework 4 代码中映射复合主键?

如何将文本文件中的数据从Java插入SQL Server?

EF Code First Mysql 到 SQL Server