Привязка данных непосредственно к запросу хранилища (DbSet, DbQuery, DbSqlQuery) не поддерживается Entity Framework 5
у меня есть devexpress GridControl, для которого я устанавливаю его источник данных так:
var regs = (from vcap in context.chaps
select vcap);
gridControl1.DataSource = new BindingList<chaps>(regs.ToList());
но когда я использую сетку, строки, которые я добавляю или удаляю, не сохраняются, сохраняются только изменения в начальных строках.
если я сделаю это:
gridControl1.DataSource = context.chaps.Local;
Я не получаю никаких строк, и AddNewRow
даже не добавляет новую строку визуально.
если я сделаю это:
gridControl1.DataSource = context.chaps.ToList();
Я получаю строки и могу сохранять изменения в них; строки удаляются визуально, но не в БД, и не может AddNewRow
.
если я сделаю это:
gridControl1.DataSource = context.chaps;
Я получаю это исключение:
Data binding directly to a store query (DbSet, DbQuery, DbSqlQuery) is not supported. Instead populate a DbSet with data, for example by calling Load on the DbSet, and then bind to local data. For WPF bind to DbSet.Local. For WinForms bind to DbSet.Local.ToBindingList().
но в контексте.парни.Местных не было!--7--> метод.
Я не думаю, что это проблема devexpress, но скорее я не получаю, как правильно установить источник данных. Есть ли способ получить context.chaps.Local.ToBindingList()
аналог?
2 ответов
context.chaps.Local
это ObservableCollection<T>
. Но!--4--> не является методом ObservableCollection<T>
но метод расширения в DbExtensions
:
public static BindingList<T> ToBindingList<T>(
this ObservableCollection<T> source) where T : class;
чтобы использовать этот метод и увидеть его с помощью Intellisense, вам нужно включить соответствующее пространство имен в файл кода, где вы пытаетесь вызвать ToBindingList()
:
using System.Data.Entity;
перед привязкой источника данных к списку привязки убедитесь, что вы загрузили все строки.
context.chaps.load
'загрузить данные
gridcontrol1.datasource = context.chaps.Local.ToBindingList()
' это загрузит записи в сетку. также дайте вам новую строку, чтобы добавить новую, или вам также разрешено обновлять сетку.