2014-10-10 2 views
1

Я пытаюсь связать 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();

ли это на самом деле должно быть сделано, как это? Это выглядит довольно уродливо.

ответ

Смежные вопросы