3 / 3 / 3
Регистрация: 20.01.2015
Сообщений: 98
1
MS SQL

Отображение навигационных свойств

07.06.2018, 15:23. Показов 1250. Ответов 4

Author24 — интернет-сервис помощи студентам
Добрый день, приложение у меня Windows Forms. Сущности создал используя EF Power Tools Reverse Engineer Code First.
База выглядит так:
Отображение навигационных свойств

Добавляю, удаляю записи, все ок. Но вот с навигационными свойствами, вместо значений выводится
System.Data.Entities.DynamicProxies.Change....
System.Data.Entities.DynamicProxies.Client....

Данные загружаю так:
C#
1
2
3
db = new DesignersContext();
db.Works.Load();
WorksdataGridView.DataSource = db.Works.Local.ToBindingList();
Главная таблица:
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
using System;
using System.Collections.Generic;
 
namespace DesignersCalcWinFormsCF.Models
{
    public partial class Work
    {
        public int Id { get; set; }
        public string Sotrudnik { get; set; }
        public System.DateTime Date { get; set; }
        public short ClientId { get; set; }
        public string Name { get; set; }
        public short Особенности { get; set; }
        public short OtrisovkaId { get; set; }
        public short DesignId { get; set; }
        public short PodgotovkaOm { get; set; }
        public string OM { get; set; }
        public Nullable<short> Prepress { get; set; }
        public short ChangesId { get; set; }
        public short MontazhId { get; set; }
        public short Технологии { get; set; }
        public bool Package { get; set; }
        public Nullable<short> KolvoKlishe { get; set; }
        public Nullable<short> RapportId { get; set; }
        public int Формат { get; set; }
        public Nullable<double> Cost { get; set; }
        public Nullable<double> Summa { get; set; }
        public virtual Change Change { get; set; }
        public Client Client { get; set; }
        public virtual Design Design { get; set; }
        public virtual Montazh Montazh { get; set; }
        public virtual Otrisovka Otrisovka { get; set; }
        public virtual Sotrudnik Sotrudnik1 { get; set; }
    }
}
Контекст:
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
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using DesignersCalcWinFormsCF.Models.Mapping;
 
namespace DesignersCalcWinFormsCF.Models
{
    public partial class DesignersContext : DbContext
    {
        static DesignersContext()
        {
            Database.SetInitializer<DesignersContext>(null);
        }
 
        public DesignersContext()
            : base("Name=DesignersContext")
        {
            
        }
 
        public DbSet<Change> Changes { get; set; }
        public DbSet<Client> Clients { get; set; }
        public DbSet<Design> Designs { get; set; }
        public DbSet<Montazh> Montazhs { get; set; }
        public DbSet<Otrisovka> Otrisovkas { get; set; }
        public DbSet<Package> Packages { get; set; }
        public DbSet<PrePressTehnology> PrePressTehnologies { get; set; }
        public DbSet<Rapport> Rapports { get; set; }
        public DbSet<Sotrudnik> Sotrudniks { get; set; }
        public DbSet<sysdiagram> sysdiagrams { get; set; }
        public DbSet<Work> Works { get; set; }
 
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Configurations.Add(new ChangeMap());
            modelBuilder.Configurations.Add(new ClientMap());
            modelBuilder.Configurations.Add(new DesignMap());
            modelBuilder.Configurations.Add(new MontazhMap());
            modelBuilder.Configurations.Add(new OtrisovkaMap());
            modelBuilder.Configurations.Add(new PackageMap());
            modelBuilder.Configurations.Add(new PrePressTehnologyMap());
            modelBuilder.Configurations.Add(new RapportMap());
            modelBuilder.Configurations.Add(new SotrudnikMap());
            modelBuilder.Configurations.Add(new sysdiagramMap());
            modelBuilder.Configurations.Add(new WorkMap());
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.06.2018, 15:23
Ответы с готовыми решениями:

Отображение свойств нового класса.
В общем ситуация такая, хочу создать класс наследуемый от визуального, используя при этом в...

Подгрузка двух и более навигационных свойств
Столкнулся с такой проблемой. Если модель имеет одно навигационное свойство, то её легко подгрузить...

Отображение свойств товаров
Вновь созданные свойства товаров не отображаются на сайте. В чём может быть причина?

Визуальное отображение свойств класса
Добрый день. Как просто добавить в форму св-во своего класса. К примеру, есть класс public User...

4
3 / 3 / 3
Регистрация: 20.01.2015
Сообщений: 98
08.06.2018, 14:27  [ТС] 2
Разобрался, у подчиненных таблиц должен быть определен метод:
C#
1
2
3
4
public override string ToString() 
        {
            return Name;
        }
Name - имя поля, которое нужно вывести.
0
HF
1154 / 740 / 181
Регистрация: 09.09.2011
Сообщений: 2,299
Записей в блоге: 2
08.06.2018, 20:53 3
Цитата Сообщение от Corwin707 Посмотреть сообщение
Разобрался, у подчиненных таблиц должен быть определен метод ToString()
По сути вы не разобрались, а нашли одно из решений. Если в этих связанных таблицах вдруг будет гораздо больше выводимых значений, то ToString() уже не поможет.

Цитата Сообщение от Corwin707 Посмотреть сообщение
Добавляю, удаляю записи, все ок. Но вот с навигационными свойствами, вместо значений выводится
System.Data.Entities.DynamicProxies.Change....
System.Data.Entities.DynamicProxies.Client....
Не понятно, а что выводилось если написать "System.Data.Entities.DynamicProxies.Change.Name" ?

Если null или пусто, то нужно почитать про загрузку связанных таблиц (про жадную, ленивую и т.п. загрузки).
0
3 / 3 / 3
Регистрация: 20.01.2015
Сообщений: 98
13.06.2018, 11:03  [ТС] 4
Частично вы правы, я не очень понимаю смысл и назначение этих динамических прокси.
Проверил это значение в отладчике - System.Data.Entities.DynamicProxies.Change.Name В пространстве имен "System.Data" тип или имя пространства "Entities" не существует.
Про загрузку читал, это ленивая.
0
Эксперт .NET
12090 / 8369 / 1280
Регистрация: 21.01.2016
Сообщений: 31,548
13.06.2018, 11:45 5
Цитата Сообщение от Corwin707 Посмотреть сообщение
Частично вы правы, я не очень понимаю смысл и назначение этих динамических прокси.
Это для отложенной (ленивой) подгрузки свойств. Т.е. реальные данные запрашиваются в момент первого к ним обращения.
0
13.06.2018, 11:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.06.2018, 11:45
Помогаю со студенческими работами здесь

DataGrid. Отображение свойств по категориям
Приветствую.Такая проблема. Есть два DataGrid'а. Есть класс объекта у которого есть...

Отображение свойств объектов в PropertyGrid
Здравствуйте!!! Недавно начал изучать C# и наткнулся на проблему с отображением свойств...

Отображение свойств UserControl в окне Properties
мне нужно добавить настройки(properties) своего элемента, что бы их было видно в окне properties в...

Отображение свойств созданного компонента в Object Inspector
Здравствуйте дорогие форумчане , изучаю создание компонентов , столкнулся с такой проблемой , при...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru