Каков правильный способ использования Entity Framework в качестве источника данных для DataGridView?

Я попытался установить DataSource с помощью DataGridView Designer, но его там не было, а затем я сгенерировал новый источник данных с помощью мастера, который сгенерировал DataSet.

enter image description here

Но теперь у меня есть Entity Framework в моем проекте + DataSet, как я могу использовать только Entity Framework... Я в замешательстве.

artiklBindingSource был сгенерирован автоматически. Я только хотел использовать EF в качестве источника данных, теперь я застрял с нежелательным набором данных.

Ответы

Ответ 1

Чтобы добавить источник данных для использования с DataGridView на панели "Задачи DataGridView", откройте поле "Выбрать источник данных: поле со списком", а затем:

  1. Нажмите Добавить источник данных проекта, чтобы открыть мастер настройки источника данных.
  2. В разделе "Выберите тип источника данных" выберите "Объект" и нажмите "Далее".
  3. В разделе "Выбор объектов источника данных" выберите класс, который вы хотите добавить в источник данных, и нажмите "Готово".
  4. Он добавит BindingSource в вашу форму, которая используется в качестве DataSource вашего DataGridView, и вы должны загрузить данные и установить данные в DataSource вашего BindingSourc, после чего данные будут показаны в вашей сетке. например, для загрузки данных.

Вот пример кода:

using System;
using System.Windows.Forms;
using System.Data.Entity;
namespace WindowsFormsApplication
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        SampleDBEntities db;
        private void Form1_Load(object sender, EventArgs e)
        {
            db = new SampleDBEntities();
            db.Products.Load();
            this.productBindingSource.DataSource = db.Products.Local.ToBindingList();
        }
        private void SaveButton_Click(object sender, EventArgs e)
        {
            db.SaveChanges();
        }
        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            db.Dispose();
        }
    }
}

Ответ 2

Не знаю, самый ли это быстрый способ, но он проще:

dataGridViewStudents.DataSource = schoolContext.Students.ToList<Student>();