我有一个包含许多列的表,我需要更新与一组参数匹配的列。是否可以连接字符串,然后使用字符串结果使用Telerik的OpenAccess更新数据库的匹配命名列?如果是这样,我认为这里需要反思吗?我希望能够做到如下所示的事情:
一个简化的示例表:
Sku QtyOnHand Whse1Aug2017 Whse2Aug2017 Whse3Aug2017
==================================================================
ABC-123 87 2 4 8
XYZ-789 43 0 5 4
string warehouseId = "1"
string month = "Aug"
string year = "2017"
string sku = "ABC-123"
int qtySold = 3;
string columnName = "Whse" + warehouseId + month + year;
var query = (from s in model.Sales
where s.SKU == sku
select s).FirstOrDefault();
query.columnName = query.columnName + qtySold;
query.SaveChanges();
答案 0 :(得分:1)
您可以使用Reflection。例如
void UpdateProperty(object targetObject, string propertyName, object value)
{
var pi = targetObject.GetType().GetProperty(propertyName);
pi.SetValue(targetObject, value);
}
答案 1 :(得分:0)
反思会这样做,但有点贵。
Telerik Data Access开箱即用。检查API以设置和获取人工类型/字段的值。请参阅“设置和获取人工属性/字段”部分: http://docs.telerik.com/data-access/feature-reference/api/context-api/feature-ref-api-context-api-artificial-data-api
这是一个如何运作的例子:
category.SetFieldValue( "CategoryName", "MyCategory" );
category.SetFieldValue( "Description", "New Description" );