【发布时间】:2016-03-18 23:07:45
【问题描述】:
我在一个 asp.net webforms 网站中使用 MS 实体框架。我有一张可能不经常编辑的表格,但编辑很重要。当编辑待处理(尚未批准)时,我使用“待处理”编辑表在此待处理表中存储 id、列名和值的字符串版本(可以是任何内容),然后当它被接受时我需要加载待处理的项目并将该更改应用于原始表。实体是强类型的,因此我需要一种将值从字符串动态转换为该列的“任何”类型的方法。使用纯 SQL,您可以创建一条更新语句,服务器会尝试将字符串(因为 sql 始终是字符串)转换为该列类型,但是有没有办法使用实体框架来做到这一点?
我已经四处寻找并找到了如何从字符串中获取与列名匹配的属性,但我看不到一个清晰的方法(除了硬编码一个查找表对象来尝试解析每个根据我对类型进行硬编码的类型)有更好的方法吗?
【问题讨论】:
-
我创建了一个扩展方法,它使用
Convert.ChangeType将字符串转换为我需要的任何对象,使用Nullable.GetUnderlyingType()并检查该类型是否为IConvertible。这适用于大多数类型,我只需要为我使用的不是IConverible的每种类型编写一个条件。这一切都感觉很hacky,但它工作正常。
标签: sql asp.net entity-framework linq