Как сопоставить обнуляемый столбец с ненулевой переменной? - PullRequest
1 голос
/ 12 июля 2011

, если у нас есть таблица, в которой уже есть поля, помеченные как allow null (на сервере sql), и по какой-то причине я хочу сопоставить эти поля с классом в коде c #, но сохранить мои переменные как недействительные (дискретные значения) и, если i равно нулю в db, присвойте этой переменной значение по умолчанию в 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, либо я сделаю эту работу.

Может кто-нибудь дать мне решение для этого

Да, кстати, если поле Age в db равно нулю, я хочу, чтобы переменная Age принимала значение по умолчанию int (например, 0)

Ответы [ 2 ]

1 голос
/ 12 июля 2011

В вашей модели linq2sql вы можете назвать поле Age RawAge и сделать его закрытым.Затем создайте частичный класс Employee, который определяет Age как

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

Проблема, однако, заключается в том, что теперь у вас нет возможности установить значение Age в null.Невозможно отобразить значение по умолчанию для int обратно в null, поскольку оно является допустимым ненулевым значением для поля.

1 голос
/ 12 июля 2011

Просто отобразите первые два столбца, как обычно, и с помощью null-значения int используйте следующее ...

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