1

我在这张表上没有主键。我在某处读到这很重要。

出于某种原因,一个简单的

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

4

2 回答 2

0

表格没有任何固有的顺序。出于这个原因,获得“第一个”元素几乎没有意义。您只能通过某种顺序获得第一个元素。像这样:

db.tbl1.OrderBy(x => x.MyField).First()
于 2012-08-21T17:44:49.647 回答
0

SQL Server 需要主键才能知道要在 SubmitChanges 上更新哪条记录。如果未指定键,则该表将是只读的。此外,如果您在 select 子句中投影出匿名类型,则生成的属性也将是只读的。

于 2012-08-21T19:26:47.480 回答