Модель данных сущности Ado.net - нерешенные вопросы - PullRequest
0 голосов
/ 18 марта 2019

Я новичок в 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

Любая помощь будет принята с благодарностью - Заранее спасибо

...