Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 强类型数据集:重写列get:Set_C#_Xsd_Strongly Typed Dataset - Fatal编程技术网

C# 强类型数据集:重写列get:Set

C# 强类型数据集:重写列get:Set,c#,xsd,strongly-typed-dataset,C#,Xsd,Strongly Typed Dataset,我们使用数据集作为数据访问层。 目前有一些列存储加密数据 使用CLR,我能够创建一个SQL函数来解密select中的数据,但在讨论中,我们确定这是一个安全风险 我想做的是 重写数据表列的get/set,以便在使用get时取消对值的加密 并返回一个可读字符串,然后在集合上对数据进行加密 或者对表适配器执行一些操作,以便在select/update上执行与上面相同的操作 类型化数据表是分部类。虽然无法重写属性,但可以在另一个文件中添加更多方法,这些方法将在设置时加密,在获取时解密,并将值存储在原始属

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

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

我想做的是

  • 重写数据表列的get/set,以便在使用get时取消对值的加密 并返回一个可读字符串,然后在集合上对数据进行加密
  • 或者对表适配器执行一些操作,以便在select/update上执行与上面相同的操作

  • 类型化数据表是分部类。虽然无法重写属性,但可以在另一个文件中添加更多方法,这些方法将在设置时加密,在获取时解密,并将值存储在原始属性中。

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

    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);
            }
        }   
    }
    

    您可以提供的任何参考资料或示例?类型化数据集是分部类,但我在生成的强类型行定义中没有看到“partial”关键字。在visual studio 2012 pro.net 4.5数据集中,我确实看到类似公共分部类xyzRow:global::System.Data.DataRow的内容{考虑过这一点,真的很高兴有一种方法可以获得{return DecryptValue(value)}我已经有了字符串的扩展方法,所以我可以说table.value.encrypt/decrypt()并得到一个返回。我试图做的本质是将表适配器中的解密放在填充时或从DB获取数据时。感谢您的回复!是否可以扩展表适配器,使我能够处理填充时或获取时的数据?类似于