Я пытаюсь связать Infragistics UltraWinGrid моим Entities:DataBinding между Entity Framework и WinForms DataGrid
Один из моих моделей:
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();
ли это на самом деле должно быть сделано, как это? Это выглядит довольно уродливо.