Bra*_*itz 25 c# extension-methods nullable dataset strongly-typed-dataset
强类型DataTable支持"可空"字段类型,但设计器不允许您将设置更改为任何值类型字段的"允许空值".(即:字符串类型允许为空,但int不允许).
解决方法是在您想要获取Myfield时调用IsMyFieldNull().如果在包含null的情况下访问MyField,则会抛出一个eception.
这是一个巨大的麻烦,除了在显示null时可能导致应用程序崩溃时导致许多运行时错误.多年来我一直向微软抱怨这一点,但是每个新版本的visual studio仍然不允许使用可空的值类型.
我的问题:任何人都知道可以用来解决这个主要缺点的花哨的扩展方法吗?
如果您使用的是.Net 3.5或更高版本,可能这些扩展可能对您有用:http: //msdn.microsoft.com/en-us/library/system.data.datarowextensions.field.aspx
根据文档,它完全支持可空类型.它允许你使用像这样的结构
MyRow.Field<int?>("MyField")
Run Code Online (Sandbox Code Playgroud)
如果你将它分配给正确类型的现有变量或从现有变量分配,编译器可以自动推断出类型,你可以省略类型说明符,使其像
int? myVar = MyRow.Field("MyField");
MyRow.Field("MyField") = myVar;
Run Code Online (Sandbox Code Playgroud)
仍然不完美,但比在任何地方使用IsMyFieldNull()等更容易辨认.
哦,如果你想更安全地关于拼写错误的列名,你可以使用像
MyRow.Field(MyTable.MyFieldColumn)
Run Code Online (Sandbox Code Playgroud)
不要忘记添加对System.Data.DataSetExtensions的引用.
在 VS 2008 中,您只需在 nullvalue 属性中输入“0”即可。
如果您使用的是 vs2005,则必须使用 XML 编辑器来完成。您必须将 msprop:nullValue="0"其添加为属性。
| 归档时间: |
|
| 查看次数: |
13684 次 |
| 最近记录: |