為了解決我的錯誤(如下所示),我想知道如何編輯我的實體框架 T4 模板,以便將“ HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed) ”添加到 POCO 中我的臨時表的 GENERATED ALWAYS AS ROW START/END 列自動生成類的配置部分,如下所示:Property(x => x.ValidFrom).HasColumnName(@"valid_from").HasColumnType("datetime2").IsRequired().HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed);Property(x => x.ValidTo).HasColumnName(@"valid_to").HasColumnType("datetime2").IsRequired().HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed);我可以手動添加它(這解決了我的錯誤),但是當我保存 T4 模板時它當然會被覆蓋。嘗試插入記錄時出錯:“無法將顯式值插入表 'my_table' 中的 GENERATED ALWAYS 列。將 INSERT 與列列表一起使用以排除 GENERATED ALWAYS 列,或?qū)?DEFAULT 插入到 GENERATED ALWAYS 列中。”我看到了這篇文章,但它沒有幫助(也許它只在使用 edmx 文件時才有效,或者我不理解解決方案):Entity Framework not working with temporal table我的臨時表示例:CREATE TABLE [dbo].[my_table]( [id] [int] IDENTITY(1,1) NOT NULL, [user_id] [int] NOT NULL, [valid_from] [datetime2](7) GENERATED ALWAYS AS ROW START NOT NULL, [valid_to] [datetime2](7) GENERATED ALWAYS AS ROW END NOT NULL, CONSTRAINT [PK_my_table] PRIMARY KEY CLUSTERED ( [id] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], PERIOD FOR SYSTEM_TIME ([valid_from], [valid_to])) ON [PRIMARY]WITH(SYSTEM_VERSIONING = ON ( HISTORY_TABLE = [dbo].[my_table_history] ))GOALTER TABLE [dbo].[my_table] ADD CONSTRAINT [DF_my_table_SysStart] DEFAULT (sysutcdatetime()) FOR [valid_from]GOALTER TABLE [dbo].[my_table] ADD CONSTRAINT [DF_my_table_SysEnd] DEFAULT (CONVERT([datetime2](7),'9999-12-31 23:59:59')) FOR [valid_to]GO插入記錄的示例代碼:var recordToCreate = new MyTable(){ UserId = info.UserId, ValidFrom = info.ValidFrom, ValidTo = info.ValidTo,};_context.MyTables.Add(recordToCreate);_context.SaveChanges();
- 1 回答
- 0 關(guān)注
- 137 瀏覽
添加回答
舉報
0/150
提交
取消