必须从服务器上的mdb文件中提取数据。我可以打开并访问数据。现在我必须将它映射到模型,我不知道如何接收数据作为模型。我的想法是遍历收到的DataTabel数据并将其分配给模型类型的值:
OleDbCommand command = new OleDbCommand(sqlcommand, DbConnection);
adapter = new OleDbDataAdapter(command);
builder = new OleDbCommandBuilder(adapter);
dt = new DataTable();
try
{
DbConnection.Open();
adapter.Fill(dt);
foreach (DataRow row in dt.Rows)
{
var examplemodel= new exampleModel(
Id = row.ItemArray[0],
...
);
}
}
catch (Exception ex)
{
}
finally
{
DbConnection.Close();
}
这里的问题是我不能将row.ItemArray [x]指定为模型的元素,因为row.ItemArray [x]的类型为object,我无法将其转换为int字符串或其他任何内容。 此外,我认为可能有一个更简单,更清洁的方法来解决这个问题。 任何想法或建议都非常感谢。
答案 0 :(得分:1)
我更喜欢简单的Project
-Dockerfile
-src
-serving (unchanged repo of tensorflow serving)
-WORKSPACE
-tesnsorflow-serving
-...
-...
-face_ver
-model_train.py
-...
-...
。无论采用何种方法,如果我们使用列名称而不是 index ,它会非常干净和安全。
你可以做类似的事情。
Linq
答案 1 :(得分:1)
您可以使用此
var Entity=(from DataRow dataRow in data.Rows select YourEntity<exampleModel>(dataRow)).ToList();
帮手类
public static T YourEntity<T>(DataRow row) where T : new()
{
var entity = new T();
var properties = typeof(T).GetProperties();
foreach (var property in properties)
{
//Get the description attribute
var descriptionAttribute = (DescriptionAttribute)property.GetCustomAttributes(typeof(DescriptionAttribute), true).SingleOrDefault();
if (descriptionAttribute == null)
continue;
property.SetValue(entity, row[descriptionAttribute.Description]);
}
return entity;
}
并使用适当的数据表头
装饰实体 public class exampleModel
{
....
[Description("Subentity_datatable_header_header")]
public string Subentity { get; set; }
....
}