C# 有没有办法在winforms用户控件中创建通用数据库集?
我有以下代码:C# 有没有办法在winforms用户控件中创建通用数据库集?,c#,winforms,entity-framework,C#,Winforms,Entity Framework,我有以下代码: public class MaterialBase : UserControl { ... public virtual DbSet _DBSet { get; } //the entity needing to be loaded ... private DBContext DB { get; set; } //the database model we are connecting to private vo
public class MaterialBase : UserControl
{
...
public virtual DbSet _DBSet { get; } //the entity needing to be loaded
...
private DBContext DB { get; set; } //the database model we are connecting to
private void MaterialBase_Load(object sender, EventArgs e){
grid.SetDataBinding(_DBSet.Local.ToBindingList(), null, true, true);
}
}
我遇到的问题是消息中出现“…Local.ToBindingList()”错误
ToBindingList is not a member of IList
现在,如果出于测试目的我使代码不那么通用,我可以将问题代码行更改为以下代码,并且它可以完美地工作:
grid.SetDataBinding(DB.Items_MaterialOne.Local.ToBindingList(), null, true, true);
一般来说,其目的是MaterialBase是由其他更具体的控件实现的用户控件
对于新的用户控件示例:
public class MaterialOne : MaterialBase {
public override _DBSet => DB.Items_MaterialOne;
}
控件本身只是提供了一种通用的方法来编辑一组不同材质的特征,因此实际上唯一不同的是我需要加载到网格中的数据库实体(Items\u material)
那么,有谁能帮我找到一种通过实体框架将数据加载到网格中的通用方法吗?C#或VB很好,我对当前的实现不太满意,因此欢迎新的想法。您必须使用反射来实现它。“其目的是MaterialBase是一个用户控件,由其他更具体的控件实现”→ 所以,让它通用。是什么阻止你拥有通用的基本控件?@RezaAghaei请解释一下如何实现这一点…一个通用的用户控件。我要解决的部分是…在某个时候VS设计器会开始崩溃,因为它不会以泛型所需的格式序列化控件…例如…MaterialBase
ToBindingList
是System.Data.Entity.ObservableCollectionExtensions
的扩展方法。