我相信你以前见过这个问题。但是,至少在我的搜索中,每次都会被问到这样的答案:https://stackoverflow.com/a/4017148/219838弹出。答案是完全正确的,但不包括一个场景。如果你的DBA选择使用tinyint列(根据他的位列是不可索引的)来表示布尔值并且世界上什么都不会让他改变那个怎么办?
我理解布尔值和字节值之间的区别。但我不关心!我需要知道的是:是否有任何解决办法将tinyint列映射到布尔值而不是字节?
我在这里描述了一个丑陋的:http://www.saulovallory.com/how-to-map-byte-columns-to-bool-in-entityframework但不用于流畅的映射。而现在我需要一个。
答案 0 :(得分:1)
EF没有在nHibernate中构建自定义类型转换器,如IUserType
。可能的解决方法是将列映射到具有byte
类型的匹配属性,并具有另一个具有转换逻辑的bool
属性。因为这不是映射属性,所以无法在LINQ查询中使用它。
public class MyClass
{
public byte DatabaseColumnName { get; set; }
[NotMapped]
public bool DomainPropertyName
{
get
{
//conversion logic using DatabaseColumnName
}
set
{
//conversion logic using DatabaseColumnName
}
}