Re: [SQL] primary key 違反條件約束

看板Database (資料庫)作者 (大笨羊)時間14年前 (2011/06/07 18:33), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
自己回答自己... 昨天終於找到原因了 問題在於.dblm檔案和WebForm的衝突 微軟承認在這方面有技術性的疏失 首先,必須對.dbml的.cs檔案和主鍵那一塊做簡修改。 例如: [column(Storage="_CharID",DbType="Int NOT NULL", IsPrimaryKey=true, AutoSync=AutoSync.OnInsert,IsDbGenerated=true)] 重點在 "AutoSync=AutoSync.OnInsert,IsDbGenerated=true" 這兩個一定要設定好,因為預設的.dbml並不會主動加入這一行 另外就是資料表PK的部分 "識別規格"要改成"是" 還有要撰寫一堆邏輯上的程式碼 相當麻煩 至於原因是很複雜的! 原因如下: 一般而言,我們使用LINQ to SQL更新資料時,程序為: 1. 建立DataContext 2. 透過from o in ... where ... select o 取出某筆資料物件(例如: m) 3. 設定新值,例如: m.Property = newValue 4. DataContext.SubmitChanges() 5. 大功告成! 這裡有個假設前題是,全程中DataContext一直存在,以便掌握所有透過它 取出的資料物件被更改的狀況。但有個情境是: 如果我將查詢到的資料物件傳遞 到DataContext管不到的範圍,例如: 透過Web Service呼叫變更內容、或轉成JSON 字串送到網頁端修改,等修改後物件傳回時,原本用來取出資料的DataContext已不 復存在,無從SubmitChanges(); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.228.237.13
文章代碼(AID): #1DxVwK0A (Database)
文章代碼(AID): #1DxVwK0A (Database)