Я новичок в ADO.net Entity Data Model.
Мне нужен совет, так как я запутался, тусуясь по сети в поисках ответов.Таким образом, у меня есть существующая БД MS SQL с 2,5 млн. Записей.Стандартное соединение данных SQL было медленным, поэтому я изучил EF.
База данных состоит из таблиц / представлений и хранимых процедур.Используя стандартное соединение SQL, я использовал представления для отображения данных из 3 или более таблиц (представления содержат объединения) и хранимых процедур для выполнения операций CRUD.
Поэтому я ищу совет: -
Могу ли я использовать существующую базу данных в ее текущей форме.Я попробовал этот подход и добился некоторого успеха с единственной таблицей с полностью работающей системой crud.
Шаги, описанные выше, были новым проектом - затем добавьте новую модель данных сущности ado.net - выберите 1 таблицу.- затем rebuld project - затем добавьте EntityServerModeDataSource на страницу - выберите ID и имя таблицы - включите удаление и обновление - затем добавьте aspxgridview на страницу и привяжите источник данных.Измените код, как описано ниже. Измените сопоставления модели, чтобы включить хранимые процедуры SQL, запустить и протестировать проект.
Затем я попытался использовать представление и 2 хранимые процедуры (Обновить, Удалить).Удаление работает нормально, но выбрасывает Update и выдает ошибку: System.ArgumentException: «Количество передаваемых значений первичного ключа должно совпадать с количеством значений первичного ключа, определенных для сущности.Имя параметра: keyValues '
Вот мой код для удаления: -
protected void EntityServerModeDataSource1_Deleting(object sender,
DevExpress.Data.Linq.LinqServerModeDataSourceEditEventArgs e)
{
int ID = (int)e.Keys[ASPxGridView1.KeyFieldName];
using (overstayEntities1 context = new overstayEntities1())
{
var item = context.zactests.Find(ID);
if (item != null)
{
context.zactests.Remove(item);
context.SaveChanges();
}
}
e.Handled = true;
}
и вот мой код для обновления: -
protected void EntityServerModeDataSource1_Updating1(object sender,
DevExpress.Data.Linq.LinqServerModeDataSourceEditEventArgs e)
{
int ID = (int)e.Keys[ASPxGridView1.KeyFieldName];
using (overstayEntities1 context = new overstayEntities1())
{
var item = context.zactests.Find(ID);
if (item != null)
{
item.VRMEditable = (string)e.Values["VRMeditable"];
context.SaveChanges();
Если я могу решить эту проблему, то это здорово.В противном случае мне понадобятся очень четкие шаги.
Что касается отображения и удаления данных, они работают очень быстро, я просто надеюсь, что это проблема с синтаксисом при обновлении.Я использую DEVExpress aspxgridview для отображения данных, но когда я задал им вопрос, они указывают мне в этом направлении, поскольку это скорее проблема EF
Любая помощь будет принята с благодарностью - Заранее спасибо