gpt4 book ai didi

c# - 将数据表列绑定(bind)到类模型中

转载 作者:行者123 更新时间:2023-11-30 17:02:57 27 4
gpt4 key购买 nike

我有一个 DataTable和一个 Model .关于如何映射类(class)成员的列还有其他方法吗?让我说明一下我目前的方式,

类模型

private class MyModel
{
public int ModelID { get; set; }
public string ModelName { get; set; }
}

和一个DataTable具有以下数据列,

ModelID   |   ModelName 

Datatable 的记录来 self 的 sql 查询的结果。

SELECT ModelID, ModelName FROM tableName

现在,当我将记录映射到 IList<MyModel> myList 时,我做了一个 foreach循环。

foreach (DataRow row in MyDataTable)
{
MyModel model = new MyModel()
model.ModelID = Convert.ToInt32(row["Position"].ToString());
model.ModelName = row["ModelName"].ToString();
myList.Add(model);
}

这完全可以正常工作。这不是真正的问题,但考虑到我有很多数据表并且有 20 列 或更多,以及更多的类,这非常耗时。

我正在寻找的是是否有其他方法可以做到这一点。就像现有的类(class),但我真的不知道它的名字是什么。

如果这个问题已经有人问过,请帮我找到链接。

谢谢。

最佳答案

AutoMapper应该能够做到这一点,虽然你会想要测试它的效率。 This post似乎取得了一些成功:

public class Person
{
public string First_Name { get; set; }
public string Last_Name { get; set; }
public string User_Name { get; set; }
}

List<Person> people = AutoMapper.Mapper.DynamicMap<IDataReader,
List<Person>>(sourceDataTable.CreateDataReader());

请注意,在引擎盖下它可能正在做一些与您已经在做的事情非常相似的事情,但是混合了一些反射以使其更通用。你所做的事情本身并不是非常低效,除非你谈论的是真的高容量并且需要尽可能地挤出每一盎司的性能。

用 ORM 完全替换 DataTable 也可能适合您。 Entity Framework是一个非常普遍的标准,尽管还有许多其他标准。 (Dapper 以其快速的性能而闻名,如果您正在寻找的话。)

如果“耗时”部分不是运行时性能而是开发时间,我就不会太担心了。如果您可以花一些时间将翻译层后面的 DataTable 抽象为 POCO 对象,从长远来看, yield 可能会得到返回。这是很多琐碎的代码,但这是一次性的费用。

关于c# - 将数据表列绑定(bind)到类模型中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19137701/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com