我目前正在尝试为数据库中的所有存储过程编写一个简单的C#包装类。为此,我使用的是CodeSmith,特别是SchemaExplorer。
在迭代存储过程的参数时,我注意到了属性ParameterSchema.AllowDBNull,并想知道这是为了什么。据我所知,不可能将参数声明为NOT NULL,因此始终允许将NULL传递给任何参数。
通过测试,似乎AllowDBNull始终为true(或者至少,我无法编写导致false的过程)。那么,这导致我问它是为了什么?
我在2003年从CodeSmith论坛发现了这篇文章: http://community.codesmithtools.com/Support_Forums/f/3/t/264.aspx
他们说他们会在下一个版本中“修复”这个问题,这让我觉得有些东西是我遗漏或不了解这个属性。
感谢您的光临。
答案 0 :(得分:1)
我为CodeSmith Tools工作,我已从您的问题更新了forum post。我向Eric咨询了这个问题,我们认为它是设计的,因为你总是可以将null传递给存储过程参数。作为您的问题的一部分,这是一个在基类中定义的属性,允许您在其他模式对象(E.G.,ColumnSchema)上检测对象是否可为空。
CommandWrapper templates将从现有存储过程或函数生成强类型类。你有机会看看这个吗?