如何将可为空列映射到不可为空变量?
如果我们有一个表已经有一个字段标记为允许为空(在 SQL Server 中),并且由于某种原因我想将这些字段映射到 C# 代码中的类,但将我的变量保留为不可为空(离散值),并且如果db 中的 i 为 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,两者都可以完成这项工作。
任何人都可以给我一个解决方案
啊,顺便说一句,如果 db 中的 Age 字段为 null 我希望 Age 变量采用 int 的默认值(例如 0)
if we have a table that already has a fields marked as allow null (in sql server), and for some reason i want to map these fields to a class in c# code but keep my variables as non nullable (discrete values), and if i is null in db give this variable its default value in c#.
for example:
Table Employee (
ID int Not NULL,
Name nvarchar(256) NOT NULL,
Age int NULL)
Now i want this table to be mapped to this class
class Employee {
public int ID {get; set;}
public string Name {get; set;}
public int Age {get; set;}
}
i have no problem to use either linq to sql, or nhibernate, either will do the job.
can anyone give me a solution for this
Ah, BTW, if the Age field in db is null I want the Age variable to take the default value of int (for example 0)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
只需像平常一样映射前两列,并使用可为空 int 使用以下内容...
Just map the first two columns as you normally would and with the nullable int use the following...
在 linq2sql 模型中,您可以将 Age 字段命名为 RawAge 并将其设置为私有。然后创建一个将 Age 定义为 Employee 的分部类
,但问题是,您现在无法将 Age 的值设置为 null。您无法将 int 的默认值映射回 null,因为它是该字段的有效非空值。
In your linq2sql model, you could name the Age field RawAge and make it private. Then make a partial class Employee that defines Age as
A problem though, is that you now have no way to set the value of Age to null. You can't map the default value of int back to null because it is a valid non-null value for the field.