通过将列名称与字符串匹配来更新表列

时间:2017-09-27 11:41:13

标签: c# entity-framework telerik-open-access

我有一个包含许多列的表,我需要更新与一组参数匹配的列。是否可以连接字符串,然后使用字符串结果使用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();

2 个答案:

答案 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" );