在表中动态选择要更新的字段
本文关键字:更新 字段 选择 动态 | 更新日期: 2024-10-21 00:04:52
如何编写更新语句来更新数据库中的表,并且每次更新的字段都不同?并将Linq应用于SQL。在搜索了StackOverFlow和谷歌之后,我发现了与动态选择语句相关的一切,而我并不需要这些语句。
一些信息可以帮助:
我有一个名为Persons的表,其中有典型的字段:FirstName、LastName、Phone、Address、City、State等。
我目前做单独的函数来更新FirstName,下一个更新LastName,等等。我想把它们组合成一个函数,可以将给定的字段更新为给定的值,我正在使用Linq到Sql。
如果这还像泥一样清澈,请告诉我。
根据评论清理泥浆:为了澄清,我正在使用Linq到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;
}
对Persons表中的每个可更新字段重复上述操作。
我想完成以下任务:
void UpdatePersonTable(string FieldName, string FieldValue, int PersonId)
{
...
var _result = Proxy.Persons.SingleOrDefault(_per => _per.PersonId = PersonId);
_result.[Field matching FieldName] = FieldValue;
Proxy.SubmitChanges();
... }
概括一下,我想要一个方法,它将根据传递字段名称和值来进行更新,vice必须进行多个更新语句。
编辑:更新代码以提供更多函数方法。Proxy只是模型数据上下文的一个名称,正如前面提到的,这是使用Linq到Sql连接。
如果你想让一个函数执行所有类型的更新,你可以创建一个接受lamba表达式作为参数的方法
public void Update(Func<T> predicate)
{
//Use 'predicate' against your data source...
//Can't provide more code since I don't know if you are using EF, SqlClient, etc.
}