0
所有運行良好,直到我嘗試從Linq一個簡單的SQL Server更新。我的代碼是:Linq更新到SQL
DataClasses1DataContext db = new DataClasses1DataContext("mySQLServer");
db.Connection.ConnectionString = ConfigurationManager.ConnectionStrings["mySQLServer"].ToString();
var results = (from bl in db.a_Bellows_Lots
where bl.Job == this.theJob
where bl.BellowsLot == this.theLot
select bl).SingleOrDefault();
results.Quantity = this.theQuantity;
try
{
db.SubmitChanges();
}
catch (Exception ex)
{
error += " " + ex.Message;
但值沒有變化。我用LinqPad模擬了這個;
string JobNumber = "A2559038A";
string LotNumber = "17213A";
var results = (from bl in a_Bellows_Lots
where bl.Job == JobNumber
where bl.BellowsLot == LotNumber
select new
{
bl.Quantity
}).SingleOrDefault();
results.Quantity = 1;
this.SubmitChanges();
這給我的設計時錯誤「屬性格式或索引‘AnonymousType#1.Quantity’不能被分配到 - 它是隻讀的。」
我用這個設計模型前,它的工作原理:
DataClasses1DataContext db = new DataClasses1DataContext("mySQLServer");
db.Connection.ConnectionString = ConfigurationManager.ConnectionStrings["mySQLServer"].ToString();
var results = (from x in db.a_Cleaning_Logs
where x.CleaningLogID == CleaningLogID
select x).SingleOrDefault();
results.EndTime = EndDate;
results.EmployeeOut = employeeOut;
results.CleaningDone = cleaningDone;
db.SubmitChanges();
的區別是什麼;我究竟做錯了什麼?
什麼是實際問題?中間部分給出的例外很好地解釋了那裏的問題。你在問爲什麼最上面的部分沒有改變數據庫? –
第二個肯定會失敗,因爲您將數據庫的結果作爲匿名類型進行投射。第一個看起來應該起作用。當你硬編碼改變值時會發生什麼?你是否有可能將它「改變」到相同的價值? – Jonathan
數量爲3,我將代碼更改爲「results.Quantity = 123;」價值沒有變化。所以我知道我正試圖將其改變爲不同的價值。 –