繁体   English   中英

Linq to SQL:仅对具有NULL值的字段加载默认字段值

[英]Linq to SQL: Load default field Values ONLY for fields with NULL value

我正在使用Linq-to-SQL来创建一个表,该表具有名为Category的记录,并且Record有一个名为Level的列,其默认值通过数据库声明定义为-1。

我希望我的C#应用​​程序像这样插入类型为Category的新记录R:

  1. 如果变量R的字段Level为空:请使用默认DB值进行插入
  2. 如果定义了变量R的级别 (NOT NULL):使用该字段的值进行插入

我已经为字段级别使用了“ 自动生成”属性,但是它将导致在所有插入情况下都使用默认值。

Linq2SQL根本不支持SQL Default值,因此没有任何“内置”方法可以做到这一点。 但是,您始终可以找出SQL中列的默认值:

select DefaultValue=Column_default from from information_schema.columns where column_name='Level' and table_name='Category'

您可以在应用启动时执行该命令,并存储值(转换为正确的课程类型)供以后使用:

if (newCategoryToInsert.level==0) 
{
   newCategoryToInsert.level = levelDefaultValueThatIStoredEarlier;
}
dbContext.SubmitChanges();

并在Dan的方法中使用它。

但是,如果可能的话,不要理会其中任何一个,只接受NULL是未定义级别的好默认值,更改架构以允许“ Level ”为NULL并刷新DBML,然后就不必不用再担心了。

这种结构应该起作用。

if (R.Level == null)
linq query that does not include R.Level.  Database will apply default value
else
linq query that includes R.Level

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM