【问题标题】:How to convert multiple bit fields (8 per set) from database to byte in model如何将多个位字段(每组 8 个)从数据库转换为模型中的字节
【发布时间】:2013-09-05 21:14:41
【问题描述】:

我将位字段作为单独的字段保存在数据库中,因为可能与位相关的查询(那些是数字输入/输出)每个输入/输出有 8 位,每个表有 2 到 4 个输入/输出。我没有将这些字段规范化到另一个带有输入/输出的表中,因为存储与数据的比率很差(例如 2x 4B 键和 2-3B 数据,这是一种更好的存储方式)。

我使用的是 db-first 方法,EF 为所有这些位列生成了 bool 属性。目前我正在阅读那些带有位移和布尔逻辑的字段。我正在将属性读入数组并与它们进行位逻辑以获取字节,数组如下所示:

bit[] bits = new bit[8] { DO_0, DO_1, ... , DO_7 };

我正在使用 setter 数组设置属性,如下所示:

Action<bool>[] bitSetters = new Action<bool>[8] { (x) => DO_0 = x, (x) => D0_1 = x, ...};

问题是我必须为我在模型中获得的每个位列从属性和设置器数组创建值数组。还有其他方法吗?尤其是使用 EF 的一些特性。

【问题讨论】:

  • 所以您想将位转换为byte0000111115 ?
  • 是的,但这不是问题所在。问题是连接多个 bool 属性的合理方法,而无需创建太多相同代码的副本来连接多组 bool。或者使用 EF 来显示字节而不是布尔值。

标签: c# sql-server entity-framework mapping


【解决方案1】:

我发现了如何以理智的方式制作它:复杂类型。我创建了具有 8 个布尔属性和附加字节属性的新复杂类型,可以即时进行转换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    • 2012-06-06
    相关资源
    最近更新 更多