我们有我们自己的奥姆我们在这里使用,并提供强类型包装对我们所有的db表。我们还允许弱类型的临时SQL被执行,但这些查询仍然通过该同一类为得到价值观的一个数据阅读器。

在调整这类工作与Oracle,我们已经遇到一个有趣的问题。它是更好地使用DBNull.值,或者空?是否有任何好处,以使用DBNull.价值?它似乎更"正确的"使用空,因为我们已经分离自己的从数据库的世界,但是也有影响(你不能只是盲目地 ToString() 当一个值为空例如)使其绝对的东西我们需要作出有意识的决定。

有帮助吗?

解决方案

我找到它更好地使用空,而不是DB空。

原因是因为,正如你说的,你们分离自己的从数据库的世界。

它是一般的良好做法检查的基准类型,以确保他们不是空无论如何。你要是检查空事情比其他数据库数据,我发现它是最好保持一致性的系统,并利用空,不 DBNull.

从长远来看,在建筑上我觉得这是更好的解决方案。

其他提示

如果你写了你自己的奥姆,然后我要说的只是使用空,由于可以使用它,但是你想要的。我相信DBNull最初仅用于得到周围的事实,值类型(int、时间,等等)。 不能 null,而不是返回的一些等价值为零或DateTime。分,这将 意味着 null(坏,坏),他们创造了DBNull来表明这一点。也许还有更多,但我一直以为那是原因。但是,现在,我们有空类型在C#3.0,DBNull不再是必要的。事实上,皇宫SQL只是使用的空所有的地方。一点问题都没有。拥抱未来...使用空。;-)

从经验,我已经。净数据表和Tableadapter工作更好地与DBNull.它还打开了一些特殊的方法时强类型,如数据行.IsFirstNameNull时在的地方。

我希望我能给你更好的技术答案,但我的底线是使用DBNull当工作与数据库相关的对象,然后用一个"标准的"空时我正在处理的对象。净相关代码。

使用 DBNull.
我们encouintered某一类问题时使用空。
如果我记忆正确,你不能插入一个空值的一个领域,只有DBNull.
可能是Oracle相关的仅有的,对不起,我不知道详情了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top