如何编写更新语句来更新数据库中的表,每个更新的字段不同?并使用Linq to SQL。搜索过StackOverFlow和google之后,我发现了与动态选择语句相关的所有内容,我不需要这样做。
一些有用的信息:
我有一个名为Persons的表,其中包含典型字段:FirstName,LastName,Phone,Address,City,State等。
我目前执行单独的函数来执行FirstName的更新,下一个执行LastName等。我想将这些函数组合成1个函数,可以将给定的字段更新为给定的值,我使用Linq to Sql。 / p>
让我知道这是否仍然是泥巴。
每次评论清理泥浆:澄清我使用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;
}
对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();
... }
回顾一下,我想要一个方法,它将根据传入字段名称和值副本进行更新,不得不进行多个更新语句。
编辑:代码已更新,以提供更多功能方法。代理只是模型数据上下文的名称,如前所述,它使用Linq到Sql连接。
答案 0 :(得分:1)
如果你想让一个函数执行各种更新,你可以创建一个接受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.
}