如何編寫更新語句以更新數據庫中的表,並且每個更新的字段都不相同?並使用Linq to SQL。搜索StackOverFlow和谷歌後,我發現與動態選擇語句相關的所有內容都是我不需要的。動態選擇表中的字段進行更新
一些信息,以幫助:
我有一個名爲典型域的人表:名字,姓氏,電話,地址,城市,國家等
我目前還單獨的函數執行更新到FirstName,LastName等。我想將這些組合成1個函數,可以將給定的字段更新爲給定的值,並且我使用Linq to Sql。
讓我知道這是否仍然清晰如泥。
清理每個評論的泥漿:澄清我正在使用Linq to Sql。
代碼信息:
bool UpdatePersonFirstName(string FirstName, Int PersonId)
{
bool _wasUpdated = false;
if (PersonId == 0)
throw new ArguementMissingException();
using (CustomerModelDataContext proxy = new CustomerModelDataContext())
{
try
{
var _result = proxy.Persons.SingleOrDefault(_per => _per.PersonId = PersonId)
_result.FirstName = FirstName;
proxy.SubmitChanges();
_isUpdated = true;
}
catch (exception ex)
{
throw ex;
}
}
return _isUpdated;
}
bool UpdatePersonAddress(string AddressInfo, Int PersonId)
{
bool _wasUpdated = false;
if (PersonId == 0)
throw new ArguementMissingException();
using (CustomerModelDataContext proxy = new CustomerModelDataContext())
{
try
{
var _result = proxy.Persons.SingleOrDefault(_per => _per.PersonId = PersonId)
_result.Address = AddressInfo;
proxy.SubmitChanges();
_isUpdated = true;
}
catch (exception ex)
{
throw ex;
}
}
return _isUpdated;
}
重複上述在人表中的每個可更新字段。
我想完成以下任務:
void UpdatePersonTable(string FieldName, string FieldValue, int PersonId)
{
...
var _result = Proxy.Persons.SingleOrDefault(_per => _per.PersonId = PersonId);
_result.[Field matching FieldName] = FieldValue;
Proxy.SubmitChanges();
... }
回顧一下,我想1點的方法,將根據傳入的字段名稱,不必進行多次更新語句值副做更新。
編輯:更新代碼以提供更多的功能方法。代理只是模型數據上下文的名稱,正如前面提到的那樣,它使用Linq to Sql連接。
很清楚我們的泥,直到你在表單提交您的問題的方法一個簡明的代碼示例:) – BartoszKP
你可以顯示你聲明代理的地方嗎?我在我的例子中使用了一個ObjectSet,因此語法可能會有所不同。 –
在你的代碼中你聲明瞭一個'_wasUpdated',但從來沒有使用它並設置並返回一個'_isUpdated'。我也不明白爲什麼你甚至會返回'bool',因爲沒有可能返回false的代碼路徑。最後,[永遠不要拋出前;'](http://stackoverflow.com/questions/730250/is-there-a-difference-between-throw-and-throw-ex)只做'拋出;'或'拋出新的MoreSpcificExecption(「一些細節」,例如);' –