2

我敢肯定你以前见过这个问题。但是,至少在我的搜索中,每次被问到这样的答案时:https ://stackoverflow.com/a/4017148/219838会弹出。答案是完全正确的,但不涵盖一种情况。如果您的 DBA 选择使用 tinyint 列(根据他的说法,位列不可索引)来表示布尔值,而世界上没有任何东西会让他改变这一点怎么办?

我了解布尔值和字节值之间的区别。但我不在乎!我需要知道的是:是否有任何解决方法可以将 tinyint 列映射到布尔值而不是字节?

我在这里发现了一个丑陋的描述:http: //www.saulovallory.com/how-to-map-byte-columns-to-bool-in-entityframework但它不适用于流畅的映射。现在我需要一个可以做到的。

4

1 回答 1

1

EF 没有像IUserType在 nHibernate 中那样构建它的自定义类型转换器。可能的解决方法是将列映射到具有类型的匹配属性,并具有具有转换逻辑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 
       }
}
于 2012-08-13T07:02:05.577 回答