gpt4 book ai didi

c# - EF 4 - 使用时间戳列更新表时出现异常

转载 作者:太空宇宙 更新时间:2023-11-03 17:45:10 25 4
gpt4 key购买 nike

我在 SQL Server 中创建了下表

CREATE TABLE [dbo].[Role](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](20) NOT NULL,
[CreatedDate] [datetime] NULL,
[TIMESTAMP] [timestamp] NOT NULL,
[ModifiedDate] [datetime] NULL,

CONSTRAINT [PK_TBL_ROLES] 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]
) ON [PRIMARY].

使用 EF,我创建了一个带有 byte[] 类型的时间戳列的 ste 类,它是只读的。

我使用数据上下文从我的数据库中检索一个对象,例如
var roleObject = roleService.getObject(id);

现在我将角色名更改如下
roleObject.Name = "New Name";
roleObject.ModifiedDate = DateTime.Now;

最后,我使用以下通用方法调用我的存储库来持久化对象
public void PersistUpdatedItem(T entity){
_ctx.ApplyCurrentValues(typeof (T).Name, entity);
_ctx.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);
_ctx.SaveChanges();
}

备注 ctx是我的 session 对象,T 是实体类。此时我得到一个异常

Cannot update Timestamp Column



有人可以帮我解决这个问题。

谢谢

最佳答案

两点:

  • 你不能制作 Timestamp属性“只读”。 EF 必须能够设置该值,因此属性必须具有 setter,并且 setter 的可访问性必须与 accessibility defined in the designer 相同.
  • 您的 Timestamp属性必须配置为并发模式固定和StoreGenerated Pattern Coumputed .这两种配置都在设计器的属性窗口中定义。
  • 关于c# - EF 4 - 使用时间戳列更新表时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6085654/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com