如何将可为空列映射到不可为空变量?

发布于 2024-11-19 16:19:48 字数 554 浏览 1 评论 0原文

如果我们有一个表已经有一个字段标记为允许为空(在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我们只是彼此的过ke 2024-11-26 16:19:48

只需像平常一样映射前两列,并使用可为空 int 使用以下内容...

if (Age.HasValue) return Age.Value else return 0;

Just map the first two columns as you normally would and with the nullable int use the following...

if (Age.HasValue) return Age.Value else return 0;
姜生凉生 2024-11-26 16:19:48

在 linq2sql 模型中,您可以将 Age 字段命名为 RawAge 并将其设置为私有。然后创建一个将 Age 定义为 Employee 的分部类

  public int Age {
    get { RawAge.HasValue ? RawAge.Value : default(int); }
    set { RawAge.Value = value; }
  }

,但问题是,您现在无法将 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

  public int Age {
    get { RawAge.HasValue ? RawAge.Value : default(int); }
    set { RawAge.Value = value; }
  }

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文