Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Volodya_
10 / 9 / 2
Регистрация: 20.02.2018
Сообщений: 188
1

GridView и EntityDataSourсe отказываются работать с Entity Framework 6

23.06.2018, 20:18. Просмотров 833. Ответов 7

Доброго времени суток, ребята!

Создал проект ASP.net, подключил БД, создал с помощью EF 6.0.2 сущности. Попытался объектам GridView (EntityDataSourse) указать источник данных, в качестве источника данных решил указать Entity сущности, но при попытке сделать это мне выдало ошибку:
"Эта версия мастера источник данных совместима только с entity framework 5..." (подробнее на фото)

Установил пакет Microsoft.AspNet.DataSourse версии 6.0.0(последняя), у которой в описании было, что она работает с зависимостями "EntityFramework (>= 6.0.0)", но ничего не помогло.

Подскажите пожалуйста в чём проблема и как её можно устранить.
0
Миниатюры
GridView и EntityDataSourсe отказываются работать с Entity Framework 6  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2018, 20:18
Ответы с готовыми решениями:

GridView, Entity Framework, биндинг и подстатановка
Всем доброго времени суток, хочется задать уже давно наболевший вопрос. Делаю курсовую связанную с...

Обновление данных GridView через Entity
Здравствуйте - есть Грид, в него используя EntityDataSource засасываю данные из БД Хочется сделать...

Проблемка с Entity Framework
Здравствуйте, проблема такого плана - пока файл с .edmx расширением создается в рамках веб-сайта...

Entity Framework автоматическая миграция
Добрый день! В своём проекте использую EF Code First. Изначально всё было настроено и несколько...

Entity Framework многие-ко-многим
Добрый день! Прошу прощения, если создал тему не в том разделе. Ситуация такая: Использую EF...

7
sau
2059 / 1646 / 278
Регистрация: 22.07.2011
Сообщений: 6,276
Завершенные тесты: 1
23.06.2018, 21:47 2
Ну я же говорю , конструкторы - это зло ).
EntityDataSource вполне себе управляется из разметки.
0
Volodya_
10 / 9 / 2
Регистрация: 20.02.2018
Сообщений: 188
26.06.2018, 19:41  [ТС] 3
Цитата Сообщение от sau Посмотреть сообщение
Ну я же говорю , конструкторы - это зло ).
EntityDataSource вполне себе управляется из разметки.
Попробовал это сделать через разметку, как описывалось на одном из сайтов:
HTML5
1
2
3
4
5
<div class="auto-style4">
                            <asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
                                TypeName="GeographyKordinatesService" SelectMethod="GetGeographicalKoordinatesEf"></asp:ObjectDataSource>
                            <asp:GridView ID="GridView1" runat="server" DataSourceID="ObjectDataSource1"></asp:GridView>
                        </div>
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
namespace ProjectFasWater_Web_
{
    public class GeographyKordinatesService
    {
        public static List<GeographicalKoordinate> GetGeographicalKoordinatesEf()
        {
            var context = new Model1(); //Объект класса для получения доступа к сущностям
            IQueryable<GeographicalKoordinate> query = context.GeographicalKoordinates; 
            List<GeographicalKoordinate> listKoordinates = query.ToList();
            return listKoordinates;
        }
 
        public static DbGeography CreatePoint(double latitude, double longitude)
        {
            var text = string.Format(CultureInfo.InvariantCulture.NumberFormat,
                                     "POINT({0} {1})", longitude, latitude);
                        return DbGeography.PointFromText(text, 4326);
        }
        public static DbGeography CreatePoligon(params double[] latitude_longitude)
        {
            var text = string.Format(CultureInfo.InvariantCulture.NumberFormat,
                                     "POLYGON(({0} {1} {2},{3} {4} {5},{6} {7} {8},{9} {10} {11}))",
            latitude_longitude[0], " ", latitude_longitude[1], latitude_longitude[2], " ", latitude_longitude[3],
            latitude_longitude[4], " ", latitude_longitude[5], latitude_longitude[6], " ", latitude_longitude[7]);
            // 4326 is most common coordinate system used by GPS/Maps
            return DbGeography.PolygonFromText(text, 4326);
        }
        public static DbGeography CreateLineString(double latitude1, double longitude1, double latitude2, double longitude2)
        {
            var text = string.Format(CultureInfo.InvariantCulture.NumberFormat,
                                     "LINESTRING({0} {1} {2}, {3} {4} {5})", longitude1, " ", latitude1, longitude2, " ", latitude2);
            // 4326 is most common coordinate system used by GPS/Maps
            return DbGeography.LineFromText(text, 4326);
        }
 
        public static void AddGeographyKoordToDataBase(int srid, int radiusAction, decimal heighSeaLevel, string description, string typeKoordinates, params double[] latitude_longitude)
        {
            var context = new Model1();
            DbGeography geographyKoords = null;
            switch (typeKoordinates)
            {
                case "POINT": geographyKoords = CreatePoint(latitude_longitude[0], latitude_longitude[1]); break;
                case "LINESTRING": geographyKoords = CreateLineString(latitude_longitude[0], latitude_longitude[1], latitude_longitude[2], latitude_longitude[3]); break;
                case "POLYGON": geographyKoords = CreatePoligon(latitude_longitude); break;
                    // case  MessageBox.Show("Не верный тип координат");
            }
            GeographicalKoordinate geographicalKoordinate = new GeographicalKoordinate()
            {
                Koordinate = geographyKoords,
                SRID = srid,
                RadiusAction = radiusAction,
                HeighSeaLevel = heighSeaLevel,
                description = description,
                TypeKoordinates = typeKoordinates
            };
            context.GeographicalKoordinates.Add(geographicalKoordinate);
            context.SaveChanges();
        }
        public static void UpdateGeographyKoord(int idUpdate, int srid, int radiusAction, decimal heighSeaLevel, string description, string typeKoordinates, params double[] latitude_longitude)
        {
            var context = new Model1(); //Объект класса для получения доступа к сущностям
            DbGeography geographyKoords = null;
            switch (typeKoordinates)
            {
                case "POINT": geographyKoords = CreatePoint(latitude_longitude[0], latitude_longitude[1]); break;
                case "LINESTRING": geographyKoords = CreateLineString(latitude_longitude[0], latitude_longitude[1], latitude_longitude[2], latitude_longitude[3]); break;
                case "POLYGON": geographyKoords = CreatePoligon(latitude_longitude); break;
                    // case  MessageBox.Show("Не верный тип координат");
            }
            IQueryable<GeographicalKoordinate> query = context.GeographicalKoordinates;
            var updateObject = query.FirstOrDefault(x => x.Id_GeographicalKoordinates == idUpdate);
            updateObject.Koordinate = geographyKoords;
            updateObject.SRID = srid;
            updateObject.RadiusAction = radiusAction;
            updateObject.HeighSeaLevel = heighSeaLevel;
            updateObject.description = description;
            updateObject.TypeKoordinates = typeKoordinates;
            context.Entry(updateObject).State = System.Data.Entity.EntityState.Modified;
            context.SaveChanges();
        }
 
        public static void RemoveGeographicalKoordinatesEf(int id)
        {
            var context = new Model1();
            IQueryable<GeographicalKoordinate> query = context.GeographicalKoordinates;
            var removeObject = query.Where(x => x.Id_GeographicalKoordinates == id).FirstOrDefault();
            context.GeographicalKoordinates.Remove(removeObject);
            context.SaveChanges();
        }
 
    }
Выдаёт ошибку: "Не удается найти тип объекта данных, указанный в свойстве TypeName ObjectDataSource 'ObjectDataSource1'."
0
Миниатюры
GridView и EntityDataSourсe отказываются работать с Entity Framework 6  
sau
2059 / 1646 / 278
Регистрация: 22.07.2011
Сообщений: 6,276
Завершенные тесты: 1
27.06.2018, 10:45 4
https://msdn.microsoft.com/ru-ru/lib...v=vs.110).aspx
- вместо левых сайтов , информацию лучше получать от первоисточника

Добавлено через 1 минуту
П.С EntityDataSource лучше подойдет , ObjectDataSource - более общий случай.
0
Volodya_
10 / 9 / 2
Регистрация: 20.02.2018
Сообщений: 188
30.06.2018, 19:10  [ТС] 5
Цитата Сообщение от sau Посмотреть сообщение
П.С EntityDataSource лучше подойдет , ObjectDataSource - более общий случай.
А в нём можно также через класс и метод класса подгружать инкапсулировать данные?
На официальном сайте (https://msdn.microsoft.com/ru-ru/library/cc668221(v=vs.100).aspx) пример настройки через конструктор форм. Нормального примера с настройкой через разметку и использованием для запроса класса и метода данного класса не нашел?
Попытался по аналогии с ObjectDataSource прописать - неверно.
HTML5
1
2
3
<asp:EntityDataSource ID="EntityDataGeographyKoordKey" runat="server" DefaultContainerName="AdventureWorksEntities"
EntitySetName="List<GeographicalKoordinate>" ContextTypeName="GetGeographicalKoordinatesEf" OnSelecting="GetGeographicalKoordinatesEf">
</asp:EntityDataSource>
Приведи пожалуйста пример как данному объекту задать свойства, что бы он подгружал данные с помощью класса "GeographyKordinatesService" и его метода "GetGeographicalKoordinatesEf". Или ссылку на туториал с подобным случаем.
0
Volodya_
10 / 9 / 2
Регистрация: 20.02.2018
Сообщений: 188
04.07.2018, 13:34  [ТС] 6
Поправил настройки, но по прежнему не работает:
<asp:EntityDataSource ID="EntityDataGeographyKoordKey" runat="server" DefaultContainerName="AdventureWorksEntities"
EntitySetName="List<GeographicalKoordinate>" ContextTypeName="ProjectFastWater_Web_.GetGeographicalKoordinateService" OnSelecting="GetGeographicalKoordinatesEf">
</asp:EntityDataSource>
0
sau
2059 / 1646 / 278
Регистрация: 22.07.2011
Сообщений: 6,276
Завершенные тесты: 1
04.07.2018, 22:04 7
Лучший ответ Сообщение было отмечено Volodya_ как решение

Решение

Если Вам нужно работать со своим сервисом , тогда используйте ObjectDataSrouce , а EntityDataSoruce работает напрямую с контекстом данных , примеры по ссылке выше.
ContextTypeName - имя типа контекста.
OnSelecting - ожидает обработчик с определенной сигнатурой , а не ваш метод сервиса.

В общем , не нужно гадать методом тыка , открываем MSDN и читаем.
1
Volodya_
10 / 9 / 2
Регистрация: 20.02.2018
Сообщений: 188
05.07.2018, 11:54  [ТС] 8
sau, да с ObjectDataSrouce разобрался. Потом просто решил попробовать по твоему совету применить EntityDataSoruce по аналогии.
0
05.07.2018, 11:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.07.2018, 11:54

Кэш Entity Framework не сбрасывается
Добрый день При вызове из метода контроллера метода public IEnumerable&lt;Client&gt;...

Что значит сконфигурировать Entity Framework?
Дали задание в универе, не могу понять что нужно делать &quot;Изменить класс сущности и...

Entity Framework 4 событие полной загрузки
делаю загрузку, но понятно она происходит не сразу, по этому нужно событие когда будет известно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru