2014-07-03 86 views
0

我在我的數據庫中有一個名爲Patients的表。該表具有名爲DOB的列,並且具有允許空值爲真。下面是表結構:LinqToSql Nullable Column

  • ID INT IDENTITY(1,1)NOT NULL,
  • 姓爲nvarchar(50)NULL,
  • 名字爲nvarchar(50)NULL,
  • 性別位NULL,
  • 重量十進制(18,0)NULL,
  • 高度十進制(18,0)NULL,
  • DOB日期NULL
  • PatientId nvarchar(50)NOT NULL

我正在使用LinqToSql。問題是,當我想爲DOB列設置空值時,Visual Studio會告訴DOB不可空。這裏是我的代碼:

Patient tblPatient = new Patient(); 
if (txtYear.Text != "" && txtMonth.Text != "" && txtDay.Text != "") 
        tblPatient.DOB = Utility.ConvertPersianDateToGregorianDate(txtYear.Text + "/" + txtMonth.Text + "/" + txtDay.Text); 
       else 
        tblPatient.DOB = null; // The error is in this line 
+0

在您的類Patient中,DOB屬性的類型是什麼? –

+0

@FelipeOriani,它是'DateTime'。 – Mohsen

+0

David's awnser將解決您的問題:) –

回答

3

什麼是對PatientDOB屬性的類型?基於該描述,假定它是這樣的(縮短爲了簡潔):

public DateTime DOB { get; set; } 

爲了設置一個null值,它必須是一個空類型,如:

public DateTime? DOB { get; set; } 

當你從數據模型生成代碼,Linq到SQL應該已經爲你做了這個。如果代碼是手動創建的,則需要相應地更新它。如果它是自動生成的,您可能需要重新生成它。 (它似乎可能是針對數據較舊的模型生成的,列的數據不可爲空)

+0

如何重新生成Patient表格? – Mohsen

+0

@Mohsen:你是如何首先生成Linq to SQL對象的?重新運行。如果我沒有記錯,可以通過右鍵單擊Visual Studio中的數據上下文文件來更新代碼。如果沒有,您可以隨時刪除生成的Linq to SQL類,並通過向項目中添加一個新類來重新生成它們。 – David