首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Entity Framework4.1“仅代码”流畅API映射char属性?

如何使用Entity Framework4.1“仅代码”流畅API映射char属性?
EN

Stack Overflow用户
提问于 2011-07-20 18:55:10
回答 5查看 26K关注 0票数 46

我有一个具有char属性的对象:

代码语言:javascript
复制
public class Product
{
    public char Code
    {
        get;
        set;
    }
}

实体框架似乎不能映射字符(当我从模型对象创建数据库模式时,数据库中缺少此字段)。有没有什么办法可以使用fluent API来映射字符(例如,映射到字符串)?我不想更改模型对象,因为它们是遗留共享库的一部分。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-07-20 21:26:15

Char不是实体框架的有效原语类型=实体框架不映射它。如果您检查CSDL reference,您将看到有效类型的列表(char不在其中)。

数据库char(1)翻译为string (SQL to CSDL translation)。Char被描述为non-unicode string with fixed length 1

唯一难看的选项是使用字符串的第二个映射属性,而您的char非映射属性将只使用该属性中的string[0]。这只是EF中缺少一些简单的类型映射或转换器的另一个例子。

票数 74
EN

Stack Overflow用户

发布于 2015-02-09 07:07:56

在Fluent API中,您可以使用HasColumnType方法指定数据库列数据类型,如下所示:

代码语言:javascript
复制
modelBuilder.Entity<Product>()   
.Property(p => p.Code)   
.HasColumnType("char");

根据Andre Artus‘s answer here的说法,HasColumnType在EF4.1中可用。

对于那些使用数据注释的人来说,ColumnAttribute可以完成同样的事情。

代码语言:javascript
复制
[Column(TypeName="char")]
public string Code { get; set; }
票数 31
EN

Stack Overflow用户

发布于 2020-06-27 03:14:09

[Column( TypeName = "char(1)" )]

适用于我的EF core 3.1.4

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6760765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档