C# Linq to SQL:仅为具有空值的字段加载默认字段值

C# Linq to SQL:仅为具有空值的字段加载默认字段值,c#,sql,linq-to-sql,C#,Sql,Linq To Sql,我对一个表使用Linq to SQL,该表的记录名为Category,记录的列名为Level,其默认值通过数据库声明定义为-1。 我希望我的C#应用程序像这样插入类型为Category的新记录R: 如果变量R的字段级别为空:使用默认的DB值 插入 如果定义了变量R的字段级别(非空):使用 此字段用于插入 我已经为字段级别使用了自动生成的属性,但这将导致在所有插入情况下使用默认值。这种结构应该可以工作 if (R.Level == null) linq query that does not in

我对一个表使用Linq to SQL,该表的记录名为Category,记录的列名为Level,其默认值通过数据库声明定义为-1。

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

  • 如果变量R的字段级别为空:使用默认的DB值 插入
  • 如果定义了变量R的字段级别(非空):使用 此字段用于插入

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

    这种结构应该可以工作

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

    这种结构应该是可行的

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

    这种结构应该是可行的

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

    这种结构应该是可行的

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

    Linq2SQL根本不支持SQL默认值,因此没有任何“内置”方法来实现这一点。 但是,您始终可以在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();
    
    在丹的方法中使用这一点


    但是如果可能的话,不必担心这些,只要接受
    NULL
    是未定义级别的一个很好的默认值,将模式更改为允许“
    Level
    ”的
    NULL
    ,并刷新您的DBML,那么您就不必再担心它了。

    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();
    
    在丹的方法中使用这一点


    但是如果可能的话,不必担心这些,只要接受
    NULL
    是未定义级别的一个很好的默认值,将模式更改为允许“
    Level
    ”的
    NULL
    ,并刷新您的DBML,那么您就不必再担心它了。

    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();
    
    在丹的方法中使用这一点


    但是如果可能的话,不必担心这些,只要接受
    NULL
    是未定义级别的一个很好的默认值,将模式更改为允许“
    Level
    ”的
    NULL
    ,并刷新您的DBML,那么您就不必再担心它了。

    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();
    
    在丹的方法中使用这一点



    但是如果可能的话,不必担心这些,只需接受
    NULL
    是未定义级别的一个很好的默认值,将模式更改为允许
    NULL
    用于“
    Level
    ”并刷新您的DBML,那么你就不必再担心了。

    你试过在模型构造函数中添加默认值吗?你为什么不在保存之前简单地做一个检查呢,例如,
    if(obj.Level==null | | obj.Level==0){obj.Level=1;}
    @manishra-因为这与简单的if/else情况一样,违背了数据库默认值的目的。“是什么让你感到难受?”奥克伦斯:你是什么意思?他已经在数据库中设置了默认值,他想通过代码来实现。您是否尝试在模型构造函数中添加默认值?您为什么不在保存之前进行检查,即如果(obj.Level==null | | obj.Level==0){obj.Level=1;}@ManishMishra-因为这违背了数据库默认值的目的,就像简单的if/else情况一样。“是什么让你感到难受?”奥克伦斯:你是什么意思?他已经在数据库中设置了默认值,他想通过代码来实现。您是否尝试在模型构造函数中添加默认值?您为什么不在保存之前进行检查,即如果(obj.Level==null | | obj.Level==0){obj.Level=1;}@ManishMishra-因为这违背了数据库默认值的目的,就像简单的if/else情况一样。“是什么让你感到难受?”奥克伦斯:你是什么意思?他已经在数据库中设置了默认值,他想通过代码来实现。您是否尝试在模型构造函数中添加默认值?您为什么不在保存之前进行检查,即如果(obj.Level==null | | obj.Level==0){obj.Level=1;}@ManishMishra-因为这违背了数据库默认值的目的,就像简单的if/else情况一样。“是什么让你感到难受?”奥克伦斯:你是什么意思?他已经在数据库中设置了默认值,他想通过我在下面使用的代码来实现:
    dbContext.Categories.InsertOnSubmit(newCategoryToInsert);dbContext.SubmitChanges()但是我不知道如何将此模板应用于我在下面使用的代码片段上下文:
    dbContext.Categories.InsertOnSubmit(newCategoryToInsert);dbContext.SubmitChanges()但是我不知道如何将此模板应用于我在下面使用的代码片段上下文:
    dbContext.Categories.InsertOnSubmit(newCategoryToInsert);dbContext.SubmitChanges()但是我不知道如何将此模板应用于我在下面使用的代码片段上下文:
    dbContext.Categories.InsertOnSubmit(newCategoryToInsert);dbContext.SubmitChanges()但是我不知道如何将这个模板应用到这段代码中