如何使用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; }