强类型数据集:覆盖列get:set

时间:2012-06-13 13:19:10

标签: c# xsd strongly-typed-dataset

我们使用数据集作为数据访问层。 目前有一些列存储加密数据。

使用CLR我能够创建一个SQL函数来解密select中的数据,但在讨论中我们已经确定存在安全风险。

我要做的就是

  1. 覆盖数据表列的get / set,以便在获取时它将取消加密值 并返回一个可读的字符串,并在集合上将加密数据。
  2. 或对表适配器执行某些操作,以便在select / update上执行与上面相同的操作。

2 个答案:

答案 0 :(得分:2)

您可以尝试为此任务创建扩展方法:

namespace ExtensionMethods
{
    public static class MyExtensions
    {
        public static void SetEncryptColumn(this DataSetType.DataTableRow row, string value)
        {
            row.Encrypt = EncryptValue(value);
        }

        public static string GetEncryptColumn(this DataSetType.DataTableRow row)
        {
            return DecryptValue(row.Encrypt);
        }
    }   
}

http://msdn.microsoft.com/en-us/library/bb383977%28v=vs.90%29.aspx

答案 1 :(得分:0)

Typed DataTables是部分类。虽然您无法覆盖属性,但您可以在另一个文件中添加更多方法,这些文件将在set上加密并在get上解密,并将值存储在原始属性中。