C# 如何使用实体框架从数据库中获取数据?

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

使用c#,net.4.5 vs 2012

我正在尝试使用实体框架从数据库中获取数据

最初的想法是使用如下代码-它必须允许在dataGridView中添加、删除和更新条目,而不仅仅是使用
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;