如何使用Entity Framework 4.1“code only”stream利的API来映射char属性?

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

public class Product { public char Code { get; set; } } 

entity framework似乎无法映射字符(当我从模型对象中创build数据库模式时,该字段在数据库中缺失)。 有反正我可以映射字符(例如一个string)使用stream利的API? 我不想更改模型对象,因为它们是传统共享库的一部分。

Char对于entity framework=entity framework不是有效的原始types不映射它。 如果您检查CSDL引用,您将看到有效types的列表(不在其中)。

数据库char(1)被翻译为string ( SQL到CSDL翻译 )。 Char被描述为固定长度为1的非Unicodestring 。

唯一丑陋的select是使用string的第二个映射的属性,你的char非映射属性将只使用该属性的string[0] 。 这只是一个简单的types映射或转换器如何在EF中丢失的例子。

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

 modelBuilder.Entity<Product>() .Property(p => p.Code) .HasColumnType("char"); 

根据Andre Artus的回答,HasColumnType在EF4.1中可用。

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

 [Column(TypeName="char")] public string Code { get; set; }