linq to sql string property from non-null column with default

时间:2010-03-13 17:41:58

标签: linq-to-sql

我有一个基于简单表的LINQ to SQL类“VoucherRecord”。一个属性“Note”是一个表示nvarchar(255)列的字符串,该列是不可为空的,其默认值为空字符串('')。

如果我实例化VoucherRecord,则Note属性的初始值为null。如果我使用DataContext的InsertOnSubmit方法添加它,我会收到一条SQL错误消息:

  

无法将值NULL插入列'Note',表'foo.bar.tblVoucher';列不允许空值。 INSERT失败。

为什么数据库默认无法启动?什么样的查询可以绕过默认值?如何查看生成的sql以执行此操作?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

如果您省略该列,则该值将成为数据库默认值,但是您插入的任何内容都将使用而不是默认值,例如:

INSERT INTO MyTable (ID, VoucherRecord) Values(34, NULL) -- Null is used
INSERT INTO MyTable (ID) Values(34) -- Default is used

图片例如,你有一个列默认为NULL以外的任何列,但你特别希望NULL ...为了能够工作,你指定的任何值必须覆盖默认值,即使在NULL的情况。

您需要将自动同步设置为OnInsert,将自动生成值设置为true,将 Nullable 设置为false让您的专栏发挥作用。 See here for a full run-down在Linq方面做了解释。

查看生成的SQL I have to recommend LinqPad