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 に答える