【问题标题】:LINQ to SQL default valuesLINQ to SQL 默认值
【发布时间】:2010-10-05 21:51:02
【问题描述】:

我们都知道 Linq to SQL(和 SQLmetal/exe)确实是一个“原型”质量产品(它缺少基本功能,如架构“刷新”和检测具有默认值的空列)。

有没有办法自动创建我的 .dbml(类似于 LINQ to SQL 或 SQLmetal)并让它检测具有默认值的 NOT NULL 列?

要求:它需要像 linq-to-sql 或 sqlmetal 一样“容易”生成。


澄清我需要它的用途:

我有许多带有 DateCreatedDateModified 字段的表,以及一些带有默认值的 bit 和类似枚举 (int) 的列;所有这些都应该是not null

在对数据库进行更改后,我将需要重新生成(“刷新”).dbml...所以(重新)将自动生成(或 Auto-Sync)属性设置为 True 并不是我真正想要的几乎每次我更新架构时都要小心。

以下代码(基于Handling Default Values With LINQ to SQL):

namespace Project.Data
{
    public partial class ProjectDataContext
    {
        partial void OnCreated()
        {
            if (this.DateCreated == null)
            {
                this.DateCreated = DateTime.UtcNow;
            }
        }
    }
}

无法编译(... does not contain a definition for 'DateCreated' ... 出错)。我真的看到没有理由它应该编译......但我还是试了一下。也许我只是不明白他的例子中代码的上下文。

【问题讨论】:

  • 该帖子已有 2 年历史,并暗示有一天它可能会得到支持。我想看看今天是不是那一天。 :-)
  • 有人知道这方面的进展吗?
  • 这方面没有进展,也不会有,因为 linq2sql 不再开发。您显示的代码 is correct 不幸的是似乎是唯一可行的方法。它对你不起作用,因为你把OnCreated放在上下文类的定义中,你需要把它放在实体类中。

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


【解决方案1】:
this.DateCreated ?? DateTime.UtcNow

??表示如果左侧为空,则使用右侧

【讨论】:

  • 确实如此。但没关系真的很重要。
  • 是的。因为 linq 对象是 System.Nullable 的类型
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多