如何在VB.NET和ASP.NET MVC中通过数据模型选择列并获取所有行值
ASP.NET MVC 5 + VB.NET + Entity Framework 数据遍历操作方案
你当前使用的Entity Framework是ORM框架,返回的数据是强类型实体集合,不是ADO.NET中DataSet/DataTable那种按行列索引访问的结构,具体操作步骤如下:
1. 前置准备
自动生成的控制器会默认创建对应数据库上下文的实例,代码一般如下,确认你控制器顶部存在对应声明:
' 替换为你实际的数据库上下文类名 Dim db As New YourDatabaseEntities()
2. 获取整张表数据并转为列表
直接通过上下文的表对应DbSet属性获取数据,调用ToList()即可转为列表:
' 示例对应表为Products,实体类为Product,替换为你实际的表和实体名 Dim productList As List(Of Product) = db.Products.ToList()
3. 循环遍历数据
直接用For Each遍历列表即可获取每一行数据,修改数据后调用保存方法即可同步到数据库:
For Each item As Product In productList ' 直接通过实体属性获取对应列的值,示例获取ProductName列 Dim currentName As String = item.ProductName ' 修改对应列的值,示例将价格上调10% item.Price = item.Price * 1.1 Next ' 所有修改完成后统一保存到数据库 db.SaveChanges()
4. 按索引获取指定行数据
如果需要获取指定位置的行(比如第0行),直接通过列表索引取值即可:
' 获取第0行数据 Dim firstRow As Product = productList(0) ' 获取第0行对应列的值,示例取第一列Id的值 Dim firstRowFirstColValue As Integer = firstRow.Id
5. 新增数据操作
直接创建新的实体对象,添加到DbSet后保存即可:
Dim newProduct As New Product() With { .ProductName = "新商品", .Price = 89.9, .Stock = 50 } db.Products.Add(newProduct) db.SaveChanges()
注意事项
- 实体类和属性都是EF根据你创建的数据模型自动生成的,和数据库的表、列一一对应,直接调用属性即可,无需按列的索引序号取值
- 如果需要筛选后再遍历,可以先加查询条件再转列表,示例:
Dim cheapProducts = db.Products.Where(Function(p) p.Price < 50).ToList() - 所有新增、修改、删除操作完成后,必须调用
SaveChanges()才会将变更同步到数据库
内容的提问来源于stack exchange,提问作者Reem Elshenawy
相关产品推荐
相关产品推荐

