实体框架和WinForms数据网格之间的数据绑定



我正在尝试将Infrastics UltraWinGrid绑定到我的实体:

我的一个型号:

public class Student
{
    public int ID { get; set; }
    public String Name { get; set; }
    public virtual ICollection<Course> Courses { get; set; }
}

DbContext类:

public class AppContext: DbContext
{
    public DbSet<Student> Students { get; set; }
    public DbSet<Course> Courses { get; set; }
}

一种通用存储库的实现

public class StudentRepository : Repository<Student>
{
    public StudentRepository(AppContext context) : base(context) { }      
    public IEnumerable<Student> GetAllStudents()
    {
        return context.Students.Include("Course").ToList();
    }
    public void Save()
    {
        context.SaveChanges();
    }
}

和一个数据访问层:

public class DAL : IUnitOfWork
{
    private AppContext dbContext;
    private StudentRepository student;       
    public DAL()
    {
        dbContext = new AppContext();
    }
    // the following is probably ugly
    public AppContext getContext()
    {
        return this.dbContext;
    }
    public StudentRepository Students
    {
        get
        {
            if (students== null)
                students= new StudentRepository(dbContext);
            return students;
        }
    }        
    public int Save()
    {
        return dbContext.SaveChanges();
    }
    public void Dispose()
    {
        if (students != null)
            students.Dispose();
        GC.SuppressFinalize(this);
    }
}

到目前为止,我一直使用dal.Students.GetAllStudents().toList()作为数据源,但这显然只适用于仅用于阅读目的的网格。现在我想使用网格的更新、插入和删除功能,但我不知道如何使用。

我在互联网上找到的唯一方法是访问上下文中的学生DbSet

grid.DataSource = dal.getContext().Students.Local.ToBindingList();

真的应该这样做吗?这样看来相当难看。

这是msdn站点的示例使用它的方式:使用WinForms 的数据绑定

相关内容

  • 没有找到相关文章

最新更新