我将与 SQL Server 2005 结合使用 LINQ 和实体框架(尽管我不确定 EF 是否会影响我的问题),并且我从数据库中提取输出并将输出存储在它从模型中包含的表中定义的类中.
主要问题是,因为我正在转向这个框架,所以应用程序的许多结构都基于空字符串和负 -1 等特性,如果你试图在 LINQ / EF 之前将其变为 null将其保存到数据库中,无需任何条件逻辑。
但是,使用 LINQ / EF,它们将作为这些值插入,因此需要逻辑在插入之前将空字符串转换为 Null,反之亦然以进行选择/读取(至少据我所知,我没有'没有找到一种在 LINQ 中定义以自动将特定值转换为 Null 的方法)。
考虑到这一点,我不能围绕处理 Null 而不是空字符串/-1 等来改变整个系统。我需要编写一种循环遍历 LINQ 表类中的属性的方法,我从选择中提取数据并将 null 转换为我需要的所需值,例如:
string name = null, to string name = ""
我知道我可以使用反射和循环使用这种风格,但从我所读到的,使用它的时间成本相当昂贵,特别是当它会被合理地经常使用时,所以我相信唯一的选择是写作使用委托的东西,虽然我都非常不确定如何准确地使用委托(以前从未使用过或接触过它们),以及如何为我的问题实现它,但我确实听说过使用类型字典来对付委托,但我我不确定它是如何工作的。
总而言之,我是否缺少一种方法可以在插入/更新时轻松地将空字符串和其他定义的值转换为 null,以及在 select 上执行相反的操作,或者有人可以解释如何使用委托来实现这一点?(或者我误认为反射通常效率很低?)