【发布时间】:2011-08-30 10:47:23
【问题描述】:
我在 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 是我的会话对象,T 是实体类。此时我得到一个异常
无法更新时间戳列
谁能帮我解决这个问题。
谢谢
【问题讨论】:
标签: c# .net entity-framework-4