0

我有一些包含字符串的对象模型。其中一些属性会在运行时填充,但有些则不会,因此当我将这些对象映射回某些数据库字段时,某些字段会存储为 NULL 而不仅仅是空字符串。为了解决这个问题,我= "";在构造函数中设置了这些属性。现在我有大约 30 个这样的字符串属性,所以很多行只是将字符串属性设置为“”。有没有办法说

"at object instantiation, set all strings to = "";

这样我就可以写了

public class MyModel : SomeSpecialTypeThatInitializesStrings {}

谢谢。

4

2 回答 2

2

在 SQL Server 端为您的 varchar 列设置默认值处理此问题是个好主意

例子:

ALTER TABLE EMPLOYEE ADD COLUMNNAME VARCHAR(50) DEFAULT ''
于 2013-07-06T15:50:57.053 回答
1

就在这里。我在我的项目中编写了一个宏解析器,它解析特定对象中宏的所有字符串属性。这个想法是您使用反射来迭代对象的属性,并SetValue在适当的属性上调用方法。

一天的第一件事(对我来说)是为以下内容创建一个扩展方法System.Type

public static partial class TypeExtensionMethods
{
    public static PropertyInfo[] GetPublicProperties(this Type self)
    {
        return self.GetProperties(BindingFlags.Public | BindingFlags.Instance).Where((property) => property.GetIndexParameters().Length == 0 && property.CanRead && property.CanWrite).ToArray();
    }   // eo GetPublicProperties
}   // eo class TypeExtensionMethods

然后在对象上使用它(注意,ForEach是一种扩展方法,但只是简写for each()

        obj.GetType().GetPublicProperties().ForEach((property) =>
            {
                if (property.GetGetMethod().ReturnType == typeof(string))
                {
                    string value = (string)property.GetValue(obj, null);
                    if (value == null)
                        property.SetValue(obj, string.Empty, null);
                }
            }
于 2013-07-06T15:52:25.743 回答