[英]LINQ to SQL Update (C#)
這是我的表格的腳本:
CREATE TABLE ClientTypes
(
type_id int PRIMARY KEY IDENTITY,
type_name varchar(250) not null,
type_applications_list text,
dtIntro datetime DEFAULT(getdate())
)
在ASP.net我試圖這樣做:
protected void btnActualizar_Click(object sender, EventArgs e)
{
var aplicacao = (from apl in dc.ClientTypes
where apl.type_id == tipoCliente
select apl).Single();
aplicacao.type_name = txtAplicações.Text.ToString();
dc.SubmitChanges();
}
然而,當它運行時,它會崩潰並說:
“數據類型text和varchar在等於運算符中是不兼容的。”
我真的不想將SQL數據類型更改為varchar,我希望它保留在文本中。 我做了一些測試,使用其他數據類型值,比如int ......一切都很順利。
我真的不明白這一點,我使用一個返回String的控件。
Thx提前
誰能幫我? Thx提前。
MSDN聲明您不應使用文本數據類型,因為它將在SQL Server的未來版本中刪除。 無法比較或排序文本數據類型,因此如果要在LINQ查詢中進行比較,則必須更改類型。
這只是一個猜測,但我想知道你是否遇到了對type_applications_list屬性進行樂觀並發檢查的問題。 在您的DBML文件中,檢查type_applications_list屬性是否將UpdateCheck設置為“Never”之外的內容; 如果是這樣,請嘗試將其更改為“從不”。
試試這個改變:
aplicacao.type_name = txtAplicações.Text;
我假設你在這條線上得到例外? 似乎Linq查詢很好,前提是tipoCliente是一個int(即使它不是你會得到一個不同的錯誤)。
我想知道LINQ生成的更新語句是否會為你自動添加一行type_applications_list =“Whatever it equals”。 如果是這樣,可能會導致問題。
你會嘗試用這句話擴展你的陳述:
aplicacao.type_applications_list =
aplicacao.type_applications_list.Substring(0, 2000);
或者子串中的其他一些大數字。 只是為了看它是否有效。
或者,如果您使用的是SQL2005或更高版本,則可以嘗試將TEXT數據類型轉換為Varchar(MAX)。 我知道你不願意,所以請先嘗試我的第一個想法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.