我想使用sql raw查询以获得更好的性能。
我想知道我是否可以像使用linq提交查询一样使用上下文。如果我将集合绑定到dgv.DataSource并进行了一些(更新),我可以调用db.SaveChanges()
将数据存储在数据库中。
示例:
Using context = New BloggingContext()
Dim blogs = context.Blogs.SqlQuery("SELECT * FROM dbo.Blogs").ToList()
datagridview1.dataSource = blogs
' if I made some changes in datagridview1 could I
' use SaveChanges to commit any changes on button click
context.SaveChanges()
End Using
答案 0 :(得分:2)
DbSet.SqlQuery方法返回由上下文跟踪的对象:
默认情况下,返回的实体由上下文(MSDN)
跟踪
(请注意Database.SqlQuery结果永远不会被上下文跟踪)
如果使用 Entity Framework 更改实体,SaveChanges
方法将保留更改。
Using context = New BloggingContext()
Dim blogs = context.Blogs.SqlQuery("SELECT * FROM dbo.Blogs").ToList()
blogs.First().Title = "new Title"
context.SaveChanges() ' new Title will be persisted on database
End Using
顺便说一句,取决于您使用的 datagridview 的类型( webform , winform , WPF 等等,您必须将修改后的实体附加到将用于保存更改的上下文中。