C# 如何使用实体框架从数据库中获取数据?
使用c#,net.4.5 vs 2012 我正在尝试使用实体框架从数据库中获取数据 最初的想法是使用如下代码-它必须允许在dataGridView中添加、删除和更新条目,而不仅仅是使用C# 如何使用实体框架从数据库中获取数据?,c#,.net,winforms,entity-framework,datagridview,C#,.net,Winforms,Entity Framework,Datagridview,使用c#,net.4.5 vs 2012 我正在尝试使用实体框架从数据库中获取数据 最初的想法是使用如下代码-它必须允许在dataGridView中添加、删除和更新条目,而不仅仅是使用context.SaveChanges()(如果我没有错的话,请使用ObjectSet中的方法)保存更改 结果-异常 不支持直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)的数据 然后我尝试了一个稍加修改的代码: using (LibraryEntities context = new Lib
context.SaveChanges()
(如果我没有错的话,请使用ObjectSet
中的方法)保存更改
结果-异常
不支持直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)的数据
然后我尝试了一个稍加修改的代码:
using (LibraryEntities context = new LibraryEntities())
{
var query = (from c in context.Book select c).First();
DataGridView dgv = new DataGridView();
dgv.DataSource = query;
}
但有相同的问题例外
不支持直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)的数据
最后,尝试将全部转换为List()
:
正如预期的那样,我在DataGridView中获得了所有db条目,但我不能添加、更新和删除任何条目
问题是-如何在dataGridView
中更改数据库,然后用DbContext.SaveChanges()保存它是winforms吗?
如果是,则必须使用BindingSource链接数据
BindingSource bs = new BindingSource();
bs.DataSource = typeof(Book); // Book is a type of your Entity class
db.Book.ToList().ForEach(n => bs.Add(n));
dgv.DataSource = bs;
现在它是可编辑的。及
要存储更改,只需调用db.SaveChanges()
将列表分配到DataGrid的方法对WPF有效。你打算移居那里吗 我建议将repository模式与unitofwork模式结合使用,这意味着repository类将处理所有CRUD操作,unitofwork类将提交所有更改。@ElliotTereschuk,纯英语站点也是如此。谷歌提供的这是一个翻译嘿。试着想想那些现成的例子并不完全理解所有的东西< /代码>谢谢你,我知道,这是因为这里很少见到乌克兰人。Elliot TereschukПаааааааааааааааааа1072嗨,问题中有什么描述不正确?@Elliot Tereschuk。так, але коли я приводжу до колекції, я отримую результат. проблема в тому. 数据网格视图。数据网格视图
。редагувати її (видаляти міняти значення додавати рядки. тощо). А потім повністю зберегти. 埃利奥特·特莱舒克(Elliot Tereschuk)。是的,但当我尝试收集时-所有都可以,但我不能在DataGridView
中做任何事情。我想要的是-在DataGridView
中加载所有数据库,然后修改其实体并更改它们(意味着添加、删除或更新),然后使用DbContext.SaveChanges()
保存它-就像我在很多教程中看到的那样-但是我不能,因为exceptionYep的存在,我使用WinForms,我正在考虑wpf,但目前我只是在学习(在空闲时间)c#。首先,试着理解主要的里程碑。你的建议太完美了——据我所知,我必须在使用之前为数据添加一些“缓冲区”。感谢您提供任何链接以获取有关此模式的教程或其他信息,如果您诚实地-从未听说过Unitofwork-创建T4模板
using (LibraryLib.LibraryEntities context = new LibraryLib.LibraryEntities())
{
DataGridView dgv = new DataGridView();
dgv.DataSource = (from c in context.Book select c).ToList();
}
BindingSource bs = new BindingSource();
bs.DataSource = typeof(Book); // Book is a type of your Entity class
db.Book.ToList().ForEach(n => bs.Add(n));
dgv.DataSource = bs;