小编Cio*_*Ion的帖子

如何处理EF 4.3.1设置修改了Rowversion行

说我们有:

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)

.net c# entity-framework entity-framework-4.3

5
推荐指数
1
解决办法
2166
查看次数

为什么为具有ORDER by的选项打开游标不会反映对后续表的更新

我已经设置了这个奇怪行为的小例子

    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)

sql t-sql database sql-server

2
推荐指数
2
解决办法
6884
查看次数