2014-07-03 55 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