Я испробовал все способы, которые я себе представил, и должен сказать, что принятый ответ - это единственный способ решить проблему типа char, насколько я знаю.
Тип char недоступен для использования в EntityFramework.
Свободное API включено в это ограничение.
Если вы попытаетесь поставить char на Property(p => p.MyCharProperty)
, вы получите Exception .
Это означает, что свойства char недоступны ни для Fluent API, ни для атрибутов.
Самое простое решение - это (по предложению Ладислава Мрнки).
public class Product
{
public char Code { get; set; }
[Column("Code", TypeName="char")]
[MaxLength(1)]
public string CodeString
{
get { return Code.ToString(); }
set { Code = value[0]; }
}
}
Одно примечание: вы не можете сделать собственность частной, защищенной или внутренней. Должен быть публичным .
Свободная версия API будет выглядеть следующим образом.
public class Product
{
public char Code { get; set; }
//We need the property but we will use the Fluent API to replace the attributes
public string CodeString
{
get { return Code.ToString(); }
set { Code = value[0]; }
}
}
modelBuilder.Entity<Product>().Property(p => p.Code)
.HasTypeName("char")
.HasMaxLength(1)