【发布时间】:2014-08-28 22:47:15
【问题描述】:
我在数据库中有纯文本记录。 从外部来源我得到字符串值的 md5 哈希。
Entities DB = ...
DB.SomeObjects.FirstOrDefault(p => p.PlainTextValue == md5HashedValue);
如何将此 PlainTextValue 转换为 md5?
【问题讨论】:
标签: entity-framework
我在数据库中有纯文本记录。 从外部来源我得到字符串值的 md5 哈希。
Entities DB = ...
DB.SomeObjects.FirstOrDefault(p => p.PlainTextValue == md5HashedValue);
如何将此 PlainTextValue 转换为 md5?
【问题讨论】:
标签: entity-framework
这是一个糟糕的实现。要使用它,您需要从 DB 中读取所有行,在应用程序端计算其 MD5,并将它们与提供的值进行比较。每次执行此查询时都会发生这种情况。这是因为数据库无法进行该计算,因此无法将查询转换为 SQL 查询。 (如果不够清楚:您只能从数据库中读取所有文本,将它们存储在 List 或某处,然后在应用程序端计算所有哈希......每次)
理想的解决方案是在数据库、新列或相关表上计算 MD5,以避免重复计算,并且必须读取所有文本并将其传输到应用程序。 (然后,每当文本发生变化或插入新文本时,计算哈希值,并将其存储在数据库中。
要使用 C# 计算 MD5,您可以查看 this SO Q&A。
【讨论】: