我有一个具有char属性的对象:
public class Product
{
public char Code
{
get;
set;
}
}实体框架似乎不能映射字符(当我从模型对象创建数据库模式时,数据库中缺少此字段)。有没有什么办法可以使用fluent API来映射字符(例如,映射到字符串)?我不想更改模型对象,因为它们是遗留共享库的一部分。
发布于 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中缺少一些简单的类型映射或转换器的另一个例子。
发布于 2015-02-09 07:07:56
在Fluent API中,您可以使用HasColumnType方法指定数据库列数据类型,如下所示:
modelBuilder.Entity<Product>()
.Property(p => p.Code)
.HasColumnType("char");根据Andre Artus‘s answer here的说法,HasColumnType在EF4.1中可用。
对于那些使用数据注释的人来说,ColumnAttribute可以完成同样的事情。
[Column(TypeName="char")]
public string Code { get; set; }发布于 2020-06-27 03:14:09
[Column( TypeName = "char(1)" )]
适用于我的EF core 3.1.4
https://stackoverflow.com/questions/6760765
复制相似问题