Vb.net 无法使用实体框架保存记录
有人能帮忙吗 我是个十足的初学者。但是我搜索了一下网。VB中的任何地方都没有显示很多示例 我已经创建了一个包含win表单的测试项目。然后添加了另一个包含实体模型的项目,在构建模型之后,我将其引用添加到Win form项目中。之后,我添加了模型对象作为数据源 我将datasource控件拖到表单中,并添加了以下代码Vb.net 无法使用实体框架保存记录,vb.net,winforms,frameworks,entity,Vb.net,Winforms,Frameworks,Entity,有人能帮忙吗 我是个十足的初学者。但是我搜索了一下网。VB中的任何地方都没有显示很多示例 我已经创建了一个包含win表单的测试项目。然后添加了另一个包含实体模型的项目,在构建模型之后,我将其引用添加到Win form项目中。之后,我添加了模型对象作为数据源 我将datasource控件拖到表单中,并添加了以下代码 Private context As TestModelEntities Private Sub Form1_Load(sender As Object, e As EventArg
Private context As TestModelEntities
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
context = New TestModelEntities
Dim query = context.employees
EmployeeBindingSource.DataSource = query.ToList
End Sub
Private Sub DepartmentBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EmployeeBindingNavigatorSaveItem.Click
Try
context.SaveChanges()
MessageBox.Show("Changes saved to the database.")
Me.Refresh()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
我一整天都在挠头。不知道我做错了什么。在您的
部门绑定导航器SaveItem\u单击方法时,在调用上下文。SaveChanges()
之前,您似乎没有向上下文添加任何内容
因此,实体框架不知道任何新添加的实体,也不会持久化它们
尝试将实体添加到上下文,然后调用context.SaveChanges()
更新
下面是一篇MSDN文章,介绍如何在上下文中添加/附加实体:
不幸的是,它在C#中(我在VB.NET中找不到翻译或等效的文章),但在SaveChanges()
之前将员工
(或部门
)添加或附加到您的上下文中的想法是一样的,我对您的问题有点困惑,但我可能有一些提示可以帮助。首先,正如@Philip Tenn所说的,您需要将您创建的内容添加到上下文中。在vb.net中非常简单,只需编写:
Context.Table.Add(Object2Add)
这将把对象放入该数据表中。现在,当你询问时,你应该说:
Dim MyQuery作为IEnumerable(属于DataTable)=(来自Context.DataTable中的)。ToList
这将从该数据表中获取所有内容并将其存储在列表中。代码中可能存在的一个问题是,上下文需要在每个子系统中分别声明(像新TestModelEntity这样暗淡的上下文)或全局声明(像新TestModelEntity这样公共上下文(这在子系统之外))。我知道我晚了几年,但希望这能帮助一些人 谢谢Philip,我的理解是使用实体框架的好处之一。它将文本框映射到数据库字段。我可能错了。但我遵循了MSDN示例。@Anup我没有将EF用于Windows窗体(我已将其用于ASP.NET Web窗体和ASP.NET MVC)。在一天结束时,即使您找到了将文本框绑定到实体字段的方法,您仍然需要在调用SaveChanges之前将其添加到上下文中,否则就没有要保存的更改。我会从一个简单的例子开始,新建一个Employee(或您正在使用的任何实体对象),将其添加到上下文中,然后调用SaveChanges并验证它的持久性,context.table.field=autogeneratedtextboxs.text用于每个字段?@Anup我认为您对WinForms的关注太多,试图使用数据绑定到实体(我还没有这样做)。我建议您只需创建一个简单的ASP.NET网页,其中包含一个按钮,该按钮除了构造和保存(使用硬编码值)实体外,什么都不做。从那以后,你可以让它变得动态,转到WinForms等等。有人能帮你吗。