Asp.net 数据库中字符串值的全局替换
我有一个非常独特的情况,我被要求使用现有数据库制作桌面产品的web版本。问题是,该产品的前一位开发人员在保存记录时,将空的#放在字符串中,这样数据库的表几乎在所有字符串类型的列中都用#填充。他有一个函数,在引用任何字段时,都会将其去掉,这样就不会显示#了(这就引出了一个问题,为什么他会包括它们!!) 我的问题是,我希望能够使用ASP.Net、实体框架、模型等,这样我就可以简单地在Web Api中返回模型或模型的IEnumerables,但仅仅这样做就意味着文本框中会有一个#Asp.net 数据库中字符串值的全局替换,asp.net,sql-server,entity-framework,Asp.net,Sql Server,Entity Framework,我有一个非常独特的情况,我被要求使用现有数据库制作桌面产品的web版本。问题是,该产品的前一位开发人员在保存记录时,将空的#放在字符串中,这样数据库的表几乎在所有字符串类型的列中都用#填充。他有一个函数,在引用任何字段时,都会将其去掉,这样就不会显示#了(这就引出了一个问题,为什么他会包括它们!!) 我的问题是,我希望能够使用ASP.Net、实体框架、模型等,这样我就可以简单地在Web Api中返回模型或模型的IEnumerables,但仅仅这样做就意味着文本框中会有一个# 与其在客户端或服务器
与其在客户端或服务器端创建某种函数,谁能建议一种在整个sql server数据库中用空值全局替换#的可能方法,或者建议想到的任何其他可能的解决方案?为什么不简单地使用更新脚本将“#”转换为NULL或其他内容:
update dbo.X
set Value1 = NULL
when Value1 = '#'
这可能是一个更大的努力,但将是一次性的,值得它使事情更容易为您的未来发展
除此之外,EF或.NET没有任何隐含的东西会自动删除这些内容;您需要编写一个例程来完成它。EF会让这更痛苦,因为您不能在LINQ查询中使用自定义例程,它将转换为SQL。我修改了上面的例程,它工作正常,但我不能包含ntext类型,我可以使用上面的变体吗?您只需找到一个值并设置一个新值。不需要替换。问题是有很多表,只需要检查字符串类型字段。如果我手动编写脚本,它将花费数周的时间,对于将循环所有表和某些字段类型的脚本有何建议?您可以尝试利用包含所有元数据的INFORMATION_SCHEMA.tables和INFORMATION_SCHEMA.COLUMNS视图。我会使用的一个技巧是使用select语句查询update语句,如
select'updatedbo.+TABLE\u NAME+'set'+COLUMN\u NAME+'=NULL,其中'+COLUMN\u NAME+'=''''''.'.\#'
。差不多吧。不幸的是,这是某些设计决策的后果。。。