Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EF 4-使用时间戳列更新表时出现异常_C#_.net_Entity Framework 4 - Fatal编程技术网

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

C# EF 4-使用时间戳列更新表时出现异常,c#,.net,entity-framework-4,C#,.net,Entity Framework 4,我在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_RO

我在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,我创建了一个ste类,其时间戳列的类型为byte[],为只读

我使用datacontext从数据库中检索对象,例如

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是实体类。在这一点上,我得到了一个例外

无法更新时间戳列

有人能帮我解决这个问题吗


谢谢,只需从模型对象中删除时间戳。

只需从模型对象中删除时间戳。

两点:

  • 不能将
    时间戳
    属性设置为“只读”。EF必须能够设置该值,因此属性必须具有setter,并且setter的可访问性必须与相同
  • 您的
    Timestamp
    属性必须配置为固定并发模式。这两种配置都是在设计器的“属性”窗口中定义的
两点:

  • 不能将
    时间戳
    属性设置为“只读”。EF必须能够设置该值,因此属性必须具有setter,并且setter的可访问性必须与相同
  • 您的
    Timestamp
    属性必须配置为固定并发模式。这两种配置都是在设计器的“属性”窗口中定义的