You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Linq2DB时,如何避免脚手架覆盖时态表列的自定义属性?

避免linq2db脚手架覆盖自定义列属性的方法

问题背景

我有一张包含时态列的Profile表,建表语句如下:

CREATE TABLE [dbo].[Profile](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [CreatedDate] [datetime2](7) GENERATED ALWAYS AS ROW START NOT NULL,
    [UpdatedDate] [datetime2](7) GENERATED ALWAYS AS ROW END NOT NULL,
    PERIOD FOR SYSTEM_TIME (CreatedDate, UpdatedDate),
 CONSTRAINT [PK_Profile] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]

执行linq2db脚手架命令生成实体模型:

dotnet linq2db scaffold -i database.json

生成模型后,我为CreatedDate和UpdatedDate列手动添加了自定义属性:

[Column(SkipOnUpdate=false, SkipOnInsert=false)]

但重新运行脚手架命令时,这些手动添加的属性会被自动覆盖,需要找到避免该问题的方法。

可行解决方案

1. 通过配置文件预设列属性

在脚手架使用的database.json配置文件中,直接为目标表和列指定要生成的属性,这样脚手架每次运行都会自动带上这些属性,无需手动修改。示例配置如下:

{
  "database": "你的数据库名称",
  "tables": [
    {
      "name": "Profile",
      "columns": [
        {
          "name": "CreatedDate",
          "attributes": ["[Column(SkipOnUpdate=false, SkipOnInsert=false)]"]
        },
        {
          "name": "UpdatedDate",
          "attributes": ["[Column(SkipOnUpdate=false, SkipOnInsert=false)]"]
        }
      ]
    }
  ]
}

2. 使用部分类分离自定义配置

利用C#的部分类特性,将自动生成的代码和自定义配置拆分到不同文件中:

  • 保留脚手架自动生成的Profile类文件(默认是部分类),不要修改其中的内容:
// 自动生成的Profile.cs
public partial class Profile
{
    public int Id { get; set; }
    public DateTime CreatedDate { get; set; }
    public DateTime UpdatedDate { get; set; }
}
  • 手动创建一个新的部分类文件(例如Profile.Custom.cs),在这个文件中添加自定义属性:
// 手动维护的自定义部分类
public partial class Profile
{
    [Column(SkipOnUpdate=false, SkipOnInsert=false)]
    public DateTime CreatedDate { get; set; }

    [Column(SkipOnUpdate=false, SkipOnInsert=false)]
    public DateTime UpdatedDate { get; set; }
}

确保两个部分类处于同一命名空间下,后续脚手架更新只会修改自动生成的文件,不会影响你手动维护的自定义配置。

3. 自定义脚手架模板

如果上述方法无法满足需求,可以自定义linq2db的脚手架模板,修改列属性的生成逻辑,让时态列默认带上目标属性。具体操作可参考linq2db官方文档中关于模板自定义的相关说明。


内容的提问来源于stack exchange,提问作者Hugo Forte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 17:15:34