如果我们有一个表已经有一个标记为allow null的字段(在sql server中),并且出于某种原因我想将这些字段映射到c#代码中的类,但保持我的变量不可为空(离散值) ,如果i在db中为null,则将此变量赋予其在c#中的默认值。
例如:
Table Employee (
ID int Not NULL,
Name nvarchar(256) NOT NULL,
Age int NULL)
现在我想将此表映射到此类
class Employee {
public int ID {get; set;}
public string Name {get; set;}
public int Age {get; set;}
}
我使用linq to sql或者nhibernate都没问题,要么就可以了。
任何人都可以为我提供解决方案
啊,BTW,如果db中的Age字段为null,我希望Age变量采用默认值int(例如0)
答案 0 :(得分:1)
只需像往常一样映射前两列,并使用nullable int使用以下内容...
if (Age.HasValue) return Age.Value else return 0;
答案 1 :(得分:1)
在linq2sql模型中,您可以将Age字段命名为RawAge并将其设为私有。然后创建一个将Age定义为
的部分类Employee public int Age {
get { RawAge.HasValue ? RawAge.Value : default(int); }
set { RawAge.Value = value; }
}
但问题是,您现在无法将Age的值设置为null。您不能将int的默认值映射回null,因为它是该字段的有效非null值。