在实体框架中将tinyint映射到布尔值

时间:2012-08-13 06:33:26

标签: .net entity-framework

我相信你以前见过这个问题。但是,至少在我的搜索中,每次都会被问到这样的答案:https://stackoverflow.com/a/4017148/219838弹出。答案是完全正确的,但不包括一个场景。如果你的DBA选择使用tinyint列(根据他的位列是不可索引的)来表示布尔值并且世界上什么都不会让他改变那个怎么办?

我理解布尔值和字节值之间的区别。但我不关心!我需要知道的是:是否有任何解决办法将tinyint列映射到布尔值而不是字节?

我在这里描述了一个丑陋的:http://www.saulovallory.com/how-to-map-byte-columns-to-bool-in-entityframework用于流畅的映射。而现在我需要一个。

1 个答案:

答案 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 
       }
}