我这张桌子上没有主键。我在某处读到了这件事。
出于某种原因,一个简单的
public bool UpdateServiceRequest(RequestedServiceAction action) {
DataContext db = new DataContext();
var service = db.tbl1.ToList().ElementAt(0)
service.requestedAction = action.RequestedAction;
service.requestedBy = action.RequestedBy;
service.requestedDate = action.RequestedDate;
service.SubmitChanges();
return true;
}
不起作用。请求的Action,By和Date不会写入数据库。在进一步检查时,我注意到tbl1的isReadOnly属性设置为true。
所以我在创建上下文后尝试设置db.ObjectTrackingEnabled = false;
,但isReadOnly仍然设置为true。
DataContext可能需要主键来跟踪“Element(0)”?
编辑:没有仔细查看MSDN:http://msdn.microsoft.com/en-us/library/bb339901.aspx
答案 0 :(得分:0)
表没有任何固有的顺序。因此,获得“第一”元素几乎没有意义。您只能通过某种顺序获得第一个元素 。像这样:
db.tbl1.OrderBy(x => x.MyField).First()
答案 1 :(得分:0)
SQL Server需要主键来知道要在SubmitChanges上更新哪条记录。如果未指定密钥,则表将是只读的。此外,如果在select子句中预测出匿名类型,则结果属性也将是只读的。