说我们有:
public class Driver
{
public int driverID { get; set; }
public byte[] stamp { get; set; }
public string name { get; set; }
public string prename { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在简而言之,我面临着这种情况.
...
var myDriver = myCustomDBContext.Drivers.AsNoTracking()
.Where(d => d.driverID == driverID)
.SingleOrDefault();
...
myDriver.name = "John";
myDriver.prename = "Lennon";
...
myCustomDBContext.Drivers.Attach(myDriver);
myCustomDBContext.Entry(myDriver).State = EntityState.Modified;
myCustomDBContext.SaveChanges();
...
Run Code Online (Sandbox Code Playgroud)
结果是
The column cannot be modified because it is an identity, rowversion or
a system column. [Column name = stamp] …Run Code Online (Sandbox Code Playgroud) 我已经设置了这个奇怪行为的小例子
SET NOCOUNT ON;
create table #tmp
(id int identity (1,1),
value int);
insert into #tmp (value) values(10);
insert into #tmp (value) values(20);
insert into #tmp (value) values(30);
select * from #tmp;
declare @tmp_id int, @tmp_value int;
declare tmpCursor cursor for
select t.id, t.value from #tmp t
--order by t.id;
open tmpCursor;
fetch next from tmpCursor into @tmp_id, @tmp_value;
while @@FETCH_STATUS = 0
begin
print 'ID: '+cast(@tmp_id as nvarchar(max));
if (@tmp_id = 1 or @tmp_id = 2)
insert into #tmp …Run Code Online (Sandbox Code Playgroud)