在保存期间,我的页面上有一个空的TextBox,因为它不是必需的,用户决定不填写它。
从我在VB.NET中记得的情况来看,当我执行以下操作时,它会将数据库保存为NULL,但在C#中它似乎保存为空字符串。我正在使用Entity Framework 6 DB First
myobject.Phone = PhoneTextBox.Text
在保存期间,我是否真的必须为每个不需要的文本框执行以下操作?
if (string.IsNullOrEmpty(txtPhone.Text))
{
myobject.Phone = null;
}
else
{
myobject.Phone = PhoneTextBox.Text;
}
如果是这种情况的话,有关缩短if语句或创建一个处理它的函数的建议,因为在使用文本框时总会如此。
答案 0 :(得分:2)
您可以定义此扩展成员:
public static class Extensions
{
public static string ToNullIfEmpty(this string @this)
{
return String.IsNullOrEmpty(@this) ? null : @this;
}
}
然后你可以这样做:
myobject.Phone = PhoneTextBox.Text.ToNullIfEmpty();
答案 1 :(得分:0)
如果PhoneTextBox.Text
是空字符串而不是null
那么,是的,您需要在需要的地方明确设置null
值。您可以使用条件运算符缩短它:
myobject.Phone = string.IsNullOrEmpty(PhoneTextBox.Text) ? null : PhoneTextBox.Text;
答案 2 :(得分:0)
您使用什么方法存储数据?实体框架或您自己的存储过程或sql插入?
如果要滚动自己的DAL,则必须检查string.IsEmpty,在这种情况下,您可以使用DBNull.Value作为要传递的值。