如何首先在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 Core 转换为 SQL Server?