可空类型是否适合我的情况?

时间:2009-10-22 21:18:55

标签: c# asp.net sql-server-2000

最近将我的ASP.NET项目从1.1转换为3.5。万岁!目前正在开发一个包含少数可选字段的表单。通常,我会在我的代码中查看,添加大量的if语句,检查空字段,如果是,则将值设置为0。所以,我想知道最好是否最好为每个字段声明私有的,可空的变量,然后将它们作为我的数据库更新的参数添加?使用MSSQLS 2000,已经设置了相应的字段以允许空值。

澄清:网络表单包含美元金额的字段。输入的默认值为0,但如果用户删除其中一个0,将该字段留空然后提交表单,则会在方法的参数列表中的Convert.ToDecimal(MoneyField.Text)中抛出异常。将所有这些提交到数据库。是否有一种更清洁的方法可以做到这一点,我错过了?

4 个答案:

答案 0 :(得分:1)

你可能 许多真正可以为空的字段似乎很不寻常,但如果你需要分别将“无价值”描述为任何魔术域值(例如)int,然后是:Nullable<T>可以提供帮助。请注意,您必须在数据层从null手动翻译为DbNull.Valuenull上的SqlParameter表示“不发送此参数”,“发送值null”(如果您看到区别)。

答案 1 :(得分:1)

我认为现场验证与Nullable Type之间存在混淆......除非你有一些类型...说DateTime并希望它为空...这是不可能的除非使用Nullable Type

如果是这种情况那么......是的......可以说是可以自然的类型。

答案 2 :(得分:0)

是的,听起来像是一个计划。

你必须改变几个电话

static class NConv
{
    static T? ToNullable<T>(string str) where T : struct
    {
        return (T?)(string.IsNullOrEmpty(str) ? default(T?) : Convert.ChangeType(str, typeof(T)));
    }

    static void HowTo()
    {
        double? myBonus = NConv.ToNullable<double>(null);
    }
}

答案 3 :(得分:0)

根据提供的字段动态构建您的SQL。