【问题标题】:LinqToSql Nullable ColumnLinqToSql 可空列
【发布时间】:2014-08-24 13:36:05
【问题描述】:

我的数据库中有一个名为“患者”的表。该表有一个名为 DOB 的列,并且 Allow Null 值为 true。这是表结构:

  • Id int IDENTITY(1,1) NOT NULL,
  • 名字 nvarchar(50) NULL,
  • 姓氏 nvarchar(50) NULL,
  • 性位 NULL,
  • 重量小数(18, 0) NULL,
  • 高度小数(18, 0) NULL,
  • 出生日期 NULL,
  • PatientId nvarchar(50) 非空

我正在使用 LinqToSql。问题是,当我想为 DOB 列设置 null 时,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

【问题讨论】:

  • 在你的班级PatientDOB 属性的类型是什么?
  • @FelipeOriani,它是DateTime
  • 大卫的遮阳篷会解决你的问题:)

标签: c# sql sql-server linq-to-sql


【解决方案1】:

Patient 上的 DOB 属性的类型是什么?根据描述,大概是这样的(为简洁起见):

public DateTime DOB { get; set; }

为了设置一个null的值,它需要是一个可以为空的类型,比如:

public DateTime? DOB { get; set; }

当您从数据模型生成代码时,Linq to SQL 应该已经为您完成了这项工作。如果代码是手动创建的,则需要相应地更新它。如果它是自动生成的,您可能需要重新生成它。 (它似乎是针对列不可为空的旧数据模型生成的。)

【讨论】:

  • 如何重新生成 Patient 表?
  • @Mohsen:您最初是如何生成 Linq to SQL 对象的?重新运行。如果我没记错的话,可能有一个选项可以通过右键单击 Visual Studio 中的数据上下文文件来更新代码。如果没有,您始终可以删除生成的 Linq to SQL 类,然后通过向项目中添加一个新类来重新生成它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-01
  • 1970-01-01
相关资源
最近更新 更多