Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
3 / 3 / 1
Регистрация: 22.07.2022
Сообщений: 174

Крашится программа при подключении Data Context

27.09.2023, 18:19. Показов 2590. Ответов 67
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, пишу я спокойно себе разметку, никого не трогаю и тут в один прекрасный момент при сборке вылетела ошибка, которую на протяжении нескольких часов я никак не могу решить.
В чем суть, как я понял, если я добавляю на страницу Page111 Data Context MainViewModel и оставляю все так как на первом скриншоте, то вылетает ошибка.
А если я убираю DataContext, то все загружается нормально
При этом, если я убираю Content = new Page111() и оставляю в XAML Data Context, то тоже все загружается нормально.
А самое интересное в том, что у меня все до этого работало прекрасно, пока я не начал писать ItemControl для DockPanel.
Уже голову себе всю сломал, подскажите, в чем дело)

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
internal partial class MainViewModel
{
 
    [ObservableProperty] private ObservableCollection<Client> _clients = new();
    [ObservableProperty] private ObservableCollection<TabItem> _tabItems = new();
    [ObservableProperty] private ObservableCollection<ScreenShotModel> _screenShots = new();
 
 
 
 
 
    public MainViewModel()
    {
        ApplicationContext db = new();
 
        var users = db.Clients;
 
 
        foreach (var client in users)
        {
            Clients.Add(client);
        }
 
        TabItems.Add(
            new TabItem
            {
                Title = "89156347371",
                Content = new Page111(),
            }
        );
 
        ScreenShots.Add(new ScreenShotModel
        {
            Title = $"Скриншот",
            ImgSours = "Regular_FileImage",
            Text = "",
        });
 
    }
 
 
 
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
internal class TabItem : ObservableRecipient
{
    private string _title;
    private Page111 _content;
 
    public string Title
    {
        get => _title;
        set => SetProperty(ref _title, value);
    }
 
    public Page111 Content
    {
        get => _content;
        set => SetProperty(ref _content, value);
    }
}
XML
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
<Page x:Class="ChipTunningApp.Views.Windows.TabControl"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:fa="http://schemas.fontawesome.com/icons/"
      xmlns:view="clr-namespace:ChipTunningApp.ViewModels.MainViewModel"
      xmlns:models="clr-namespace:ChipTunningApp.Models"
      mc:Ignorable="d" 
      d:DesignHeight="450" d:DesignWidth="800"
      Title="TabControl1xaml">
 
    <Page.DataContext>
        <view:MainViewModel></view:MainViewModel>
    </Page.DataContext>
 
    <Grid>
        <ScrollViewer>
            <StackPanel>
                <DockPanel  Height="85" Dock="Top" Margin="10 10 10 30">
                    <UniformGrid Rows="2" Columns="6">
                        <TextBlock Text="Имя клиента" HorizontalAlignment="Center" Height="20" FontSize="16" FontWeight="Bold"/>
                        <TextBlock Text="Номер клиента" HorizontalAlignment="Center" Height="20" FontSize="16" FontWeight="Bold"/>
                        <TextBlock Text="Номер авто" HorizontalAlignment="Center" Height="20" FontSize="16" FontWeight="Bold"/>
                        <TextBlock Text="Марка авто" HorizontalAlignment="Center" Height="20" FontSize="16" FontWeight="Bold"/>
                        <TextBlock Text="Модель авто" HorizontalAlignment="Center" Height="20" FontSize="16" FontWeight="Bold"/>
                        <TextBlock Text="Проблема" HorizontalAlignment="Center" Height="20" FontSize="16" FontWeight="Bold"/>
                        <TextBox Margin="3" BorderThickness="3" FontSize="15" FontWeight="DemiBold"/>
                        <TextBox Margin="3" BorderThickness="3" FontSize="15" FontWeight="DemiBold"/>
                        <TextBox Margin="3" BorderThickness="3" FontSize="15" FontWeight="DemiBold"/>
                        <TextBox Margin="3" BorderThickness="3" FontSize="15" FontWeight="DemiBold"/>
                        <TextBox Margin="3" BorderThickness="3" FontSize="15" FontWeight="DemiBold"/>
                        <CheckBox HorizontalAlignment="Center" Margin="0 8 0 0" BorderThickness="3"/>
                    </UniformGrid>
                </DockPanel>
                <DockPanel Margin="0 0 0 30">
                    <TextBlock Text="Скриншоты" HorizontalAlignment="Center" Height="30" FontSize="20" FontWeight="Bold"/>
                </DockPanel>
                <StackPanel Orientation="Horizontal">
                    <Grid Height="250">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="1*"/>
                            <ColumnDefinition Width="1*"/>
                            <ColumnDefinition Width="1*"/>
                            <ColumnDefinition Width="1*"/>
                            <ColumnDefinition Width="1*"/>
                            <ColumnDefinition Width="1*"/>
                        </Grid.ColumnDefinitions>
                        <DockPanel Grid.Column="0" Margin="30 10 10 10">
                            <ItemsControl ItemsSource="{Binding ScreenShots}">
                                <ItemsControl.ItemTemplate>
                                    <DataTemplate>
                                        <StackPanel>
                                            <fa:ImageAwesome Icon="{Binding ImgSours}" Height="100" Width="100"/>
                                            <TextBox Text="{Binding Text}" Width="100" Height="100"></TextBox>
                                        </StackPanel>
                                    </DataTemplate>
                                </ItemsControl.ItemTemplate>
                            </ItemsControl>
                        </DockPanel>
                    </Grid>
                </StackPanel>
            </StackPanel>
        </ScrollViewer>
    </Grid>
</Page>
Миниатюры
Крашится программа при подключении Data Context   Крашится программа при подключении Data Context  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.09.2023, 18:19
Ответы с готовыми решениями:

Крашится БД при подключении через ADO
Уважаемые знатоки, Есть база dbmain.accdb, подключаюсь к ней с разных машин из VBA (excel,access) (виртуалки, расшаренная папка) через...

Программа крашится при ALT+F4
Добрый день. В своей игре я использую вычислительные шейдеры, которые требуют очищения через функцию ComputeBuffer.Dispose() я не...

Программа крашится при нажатии Y
uses ABCObjects,GraphABC; var Font_Game:string; new_game,bot_game,exit_game:TextABC; s_g,b_g:boolean; Procedure...

67
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16158 / 11278 / 2891
Регистрация: 21.04.2018
Сообщений: 33,164
Записей в блоге: 2
30.09.2023, 10:48
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от AndreyXP Посмотреть сообщение
Я еще не загружал изменения
Ок. Тогда подожду.
0
3 / 3 / 1
Регистрация: 22.07.2022
Сообщений: 174
30.09.2023, 11:11  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Я не знаю полностью логику вашего приложения и не вникал в неё.
Чисто по коду: слева у вас список клиентов. В каждом есть список public List<Vehicle> Vehicles { get; set; }. При выборе клиента, как-то логично предположить, что нужно отобразить именно его список Vehicle.
Выбор клиента осуществляется по Vehicle, да, но окно с визитом, 80% всех полей это Visit
Я переделал под визит.

Добавлено через 1 минуту
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Ок. Тогда подожду.
Code
1
2
[NotMapped]
public List<Screenshot> Screenshots { get; set; } = null!;
Я только сейчас понял, что это такое) Это прям зачетная тема)

Добавлено через 18 минут
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Ок. Тогда подожду.
Я отправил изменения, но почему-то с установкой начальных данных, список не показывает то, что они есть. Попробую разобраться

Добавлено через 3 минуты
Если делать напрямую, то работает
Clients.Add(
new Client { Id = 1, Phone = "89136403289", Name = "Андрей" }
);
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16158 / 11278 / 2891
Регистрация: 21.04.2018
Сообщений: 33,164
Записей в блоге: 2
30.09.2023, 11:17
Цитата Сообщение от AndreyXP Посмотреть сообщение
Я только сейчас понял, что это такое) Это прям зачетная тема)
Это временная заглушка, чтобы не менять миграцию.
Нужно сделать нормальную таблицу с изображениями (массив байт) и её подтягивать.
0
3 / 3 / 1
Регистрация: 22.07.2022
Сообщений: 174
30.09.2023, 11:26  [ТС]
Элд Хасп, таб открывается, а внутри пустота
Code
1
2
3
<DataTemplate DataType="{x:Type db:Visit}">
                        <views:VisitPage/>
                        </DataTemplate>
Мол не существует такой страницы, хотя она есть
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16158 / 11278 / 2891
Регистрация: 21.04.2018
Сообщений: 33,164
Записей в блоге: 2
30.09.2023, 11:27
Цитата Сообщение от AndreyXP Посмотреть сообщение
о почему-то с установкой начальных данных, список не показывает то, что они есть. Попробую разобраться
Скорее всего что с миграцией: db.Database.Migrate();.
Это одноразовый вызов для перехода со старой БД.
А для Code First нужно создание базы "с нуля".
Если закомментить db.Database.Migrate();, то выходят ошибки в Code First.
Нужно их исправлять.

Мне уже личными делами надо заняться. Попробую по быстрому разодраться, но не обещаю.
0
3 / 3 / 1
Регистрация: 22.07.2022
Сообщений: 174
30.09.2023, 11:37  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Мне уже личными делами надо заняться. Попробую по быстрому разодраться, но не обещаю.
Спасибо, сейчас главная проблема в том, что не открывается в новом Табе VisitPage
Раньше я делал через Frame - проблем не было
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16158 / 11278 / 2891
Регистрация: 21.04.2018
Сообщений: 33,164
Записей в блоге: 2
30.09.2023, 11:40
Не... Не получается по быстрому разобраться: какой-то конфликт между миграцией и Code First. Не создаётся таблица клиентов.

Добавлено через 1 минуту
Не таблица, а вообще структура БД. Только файл создаётся.
0
3 / 3 / 1
Регистрация: 22.07.2022
Сообщений: 174
30.09.2023, 11:42  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Не... Не получается по быстрому разобраться: какой-то конфликт между миграцией и Code First. Не создаётся таблица клиентов.
Думаю, на данном этапе будет достаточно добить начальный список клиентов через ViewModel

Добавлено через 1 минуту
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Не таблица, а вообще структура БД. Только файл создаётся.
Посмотрите, пожалуйста, почему не открывается окно внутри таба
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16158 / 11278 / 2891
Регистрация: 21.04.2018
Сообщений: 33,164
Записей в блоге: 2
30.09.2023, 11:43
Цитата Сообщение от AndreyXP Посмотреть сообщение
главная проблема в том, что не открывается в новом Табе VisitPage
Пока будет "думать от View" не сможете по нормальному освоить ни один из MV* паттернов. Основная часть приложения это Модель. И пока она некорректно работает приступать к View смысла нет.

Я сейчас посмотрю в чём проблема. Возможно просто не подгружаются данные.
0
3 / 3 / 1
Регистрация: 22.07.2022
Сообщений: 174
30.09.2023, 11:43  [ТС]
Элд Хасп, Через ViewModel создается полностью таблица с миграциями
Миниатюры
Крашится программа при подключении Data Context  
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16158 / 11278 / 2891
Регистрация: 21.04.2018
Сообщений: 33,164
Записей в блоге: 2
30.09.2023, 11:50
Цитата Сообщение от AndreyXP Посмотреть сообщение
почему не открывается окно внутри таба
Таб контрол привязан к Транспортным средствам:
XML
1
 <TabControl  ItemsSource="{Binding Vehicles}" Grid.Row="1" SelectedItem="{Binding SelectedVehicle}">
Соответственно в его вкладка будет отображать один Vehicle.
А у тебя задано представление для визита:
XML
12
13
14
    <d:UserControl.DataContext>
        <db:Visit/>
    </d:UserControl.DataContext>
Добавлено через 49 секунд
Цитата Сообщение от AndreyXP Посмотреть сообщение
создается полностью таблица с миграциями
С миграциями.
А с чего ты мигрируешь?
Тебе миграция или Code First нужен?
0
3 / 3 / 1
Регистрация: 22.07.2022
Сообщений: 174
30.09.2023, 11:51  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Тебе миграция или Code First нужен?
На данном этапе Code First)
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16158 / 11278 / 2891
Регистрация: 21.04.2018
Сообщений: 33,164
Записей в блоге: 2
30.09.2023, 12:03
AndreyXP, ты перепутал когда менял наследование в Code Behind.
Правильно:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System.Windows.Controls;
 
namespace ChipTunningApp.Views.Windows
{
    /// <summary>
    /// Логика взаимодействия для TabControl.xaml
    /// </summary>
    public partial class VisitPage : UserControl
    {
        public VisitPage()
        {
            InitializeComponent();
        }
    }
}
Добавлено через 1 минуту
Цитата Сообщение от AndreyXP Посмотреть сообщение
На данном этапе Code First)
Ну так отключи db.Database.Migrate(); и увидишь, что Code First не работает.

Добавлено через 2 минуты
AndreyXP, отправил фиксацию.
Сейчас уже всё - убегаю по личным делам.
0
3 / 3 / 1
Регистрация: 22.07.2022
Сообщений: 174
30.09.2023, 15:35  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
AndreyXP, ты перепутал когда менял наследование в Code Behind.
не заметил, спасибо)
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16158 / 11278 / 2891
Регистрация: 21.04.2018
Сообщений: 33,164
Записей в блоге: 2
30.09.2023, 17:34
AndreyXP, Я через час-два буду дома и смогу продолжить. Фиксацию к этому времени сделай.
0
3 / 3 / 1
Регистрация: 22.07.2022
Сообщений: 174
30.09.2023, 17:36  [ТС]
Элд Хасп, я сегодня тоже не дома, загрузил Ваши правки и уехал, тоже через пару часов только буду дома
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16158 / 11278 / 2891
Регистрация: 21.04.2018
Сообщений: 33,164
Записей в блоге: 2
01.10.2023, 00:19
AndreyXP, залил фиксацию:
Исправлена инициализация БД, реализовано добавление-редактирование клиента
0
3 / 3 / 1
Регистрация: 22.07.2022
Сообщений: 174
01.10.2023, 08:23  [ТС]
Элд Хасп, Доброе утро, я посмотрел на ваш код и у меня так много вопросов.. Написано красиво, а для меня совсем непонятно, просто темный лес)))

Добавлено через 29 минут
Немножко подразобрался и возникло очень много вопросов
Добавление и редактирование происходит в отдельном окне, это в принципе интересное решение, да, но из-за такого решения теперь появился критический баг (Видео загрузил)

Можно ведь сделать, чтобы добавление новых пользователей и их редактирование, происходило просто в отдельном табе, а не на новой странице, тогда такой баг можно будет запросто избежать

Не имеет смысла добавления нового пользователя просто по имени и номеру телефона, ведь сразу же можно открывать окно всего визита и добавлять, редактировать через него, вдруг нам понадобиться отредактировать не номер и имя клиента, а например, добавить какие-то изменения в сам визит, например, какой-нибудь новый скриншот или изменить оценку его посещения

Или так все и было запланировало или я просто что-то не понимаю, честно говоря запутался уже))
Я в принципе вроде как нашел с чем баг, но пока трогать не буду т.к. не знаю, что именно Вы хотели сделать..

Но код выглядит круто, я так, наверное, никогда писать не смогу))

0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16158 / 11278 / 2891
Регистрация: 21.04.2018
Сообщений: 33,164
Записей в блоге: 2
01.10.2023, 10:21
Цитата Сообщение от AndreyXP Посмотреть сообщение
да, но из-за такого решения теперь появился критический баг (Видео загрузил)
Видео посмотрел. Не понял в чём баг заключается.
Словесно объясните.

Цитата Сообщение от AndreyXP Посмотреть сообщение
Не имеет смысла добавления нового пользователя просто по имени и номеру телефона, ведь сразу же можно открывать окно всего визита и добавлять, редактировать через него,
Сделать можно по всякому.
У меня нет понимания логики вашего приложения.
Пока я вижу только два уровня иерархии: список клиентов и списки TC этих клиентов.
Каждому ТС, соответствует вкладка.
В списке ТС есть ещё список визитов. Это уже третий уровень иерархии.

Концептуально для меня логичным работа выглядит так:
- Для того чтобы добавить Визит, нужно для него выбрать ТС. Если это новое ТС, то сначала его создать;
- Для того чтобы добавить ТС, надо выбрать для него клиента. Если это новый клиент, то сначала его создать.

Не знаю как у вас построена работа на практике, но обычно разделяют лид, квалификацию и визит.

Например, вам поступила информация что есть такой-то клиент, который заинтересован ваших услугах. Больше ничего о нём не известно. Информация о нём должна быть потеряна - надо пытаться до него дозвониться.
Дозвонились, узнали какое авто у него, добавили его в базу согласовали время визита. Но самого визита ещё нет.
И последняя стадия это уже сам визит.

Цитата Сообщение от AndreyXP Посмотреть сообщение
Я в принципе вроде как нашел с чем баг,
Я не делал законченную систему.
Я просто показываю разные способы реализации.
А о баге - так и не понял, что вы имеете ввиду.

Так же проблема ещё в том, что у вас нет готовой Модели, нет понимания и знаний как работать с EF и Community Toolkit.
В результате вы задаёте вопросы по WPF, но по факту для реализации приходится вам показыать как работать с EF и CT, что не имеет отношения к WPF.

Добавлено через 1 минуту
Цитата Сообщение от AndreyXP Посмотреть сообщение
Но код выглядит круто, я так, наверное, никогда писать не смогу))
Это самые начальные азы.
Ничего сложного в этом нет.
0
3 / 3 / 1
Регистрация: 22.07.2022
Сообщений: 174
01.10.2023, 10:26  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Например, вам поступила информация что есть такой-то клиент, который заинтересован ваших услугах. Больше ничего о нём не известно. Информация о нём должна быть потеряна - надо пытаться до него дозвониться.
Дозвонились, узнали какое авто у него, добавили его в базу согласовали время визита. Но самого визита ещё нет.
И последняя стадия это уже сам визит.

Кстати, неплохая идея...

Цитата Сообщение от Элд Хасп Посмотреть сообщение
А о баге - так и не понял, что вы имеете ввиду.
Нет единой системы вкладок, нажимая на каждого клиента, у него открываются одинаковые вкладки
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.10.2023, 10:26

Ошибка при подключении firebird в Entity Data Model
Уважаемые Гуру! Сделал подключение к firebird из VisualStudio 2010, пытаюсь создать Entity Data Model, но получаю ошибку &quot;Unable to...

Свертывание матрицы, программа крашится при N > 2
программа крашится, если вводить n больше чем 2, как починить? #include &lt;stdio.h&gt; #include &lt;malloc.h&gt; extern double...

Программа крашится при вводе данных
Вот этот код скопирован из учебника. На моем компьютере почему то запускается программа но при вводе 1.2 3.4 5.6| просто выключается и все....

Крашится программа при переходе в userparamsActivity
программа вылетает сразу после перехода в этот активити Лог выдает ошибку: Caused by: java.lang.NullPointerException: Attempt to...

Программа компилируется, но при выполнении крашится
Задача состоит в том, чтобы заполнить массив t1 случайными числами, а после задать каждому элементу массива t2 значение, которое является...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью. Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
Грибы - это корпорации, деревья - это государства. Механизм массонского захвата власти
anaschu 18.07.2026
Макроэкономический изоморфизм теории «всего»: Грибная сукцессия как модель транснационального капитализма Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru