Форум программистов, компьютерный форум, киберфорум
SQLite
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 02.07.2015
Сообщений: 10

ManyToMany и каскадное удаление

19.10.2022, 10:38. Показов 748. Ответов 1

Студворк — интернет-сервис помощи студентам
Помимо прочих, есть три таблицы, между таблицами Projects и Employees пытаюсь реализовать связь много-ко-многим с каскадным удалением (чтобы при удалении строки из таблицы Project удалялись и любые строки из ProjectEmployees, содержащие внешний ключ на этот проект; аналогично с удалением строки из Employee).

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
    [Table("Projects")]
    public class Project
    {
        [PrimaryKey, AutoIncrement, Column("_id")]
        public int Id { get; set; }
 
        [Column("_name")]
        public string Name { get; set; }
        
        [ManyToMany(typeof(ProjectEmployee), CascadeOperations = CascadeOperation.All)]
        public List<Employee> Employees { get; set; }
 
        [Column("_start_date")]
        public DateTime StartDate { get; set; }
 
        [Column("_finish_date")]
        public DateTime FinishDate { get; set; }
 
        public Project()
        {
            StartDate = DateTime.Today;
            FinishDate = DateTime.Today;
        }
    }
 
    [Table("Employees")]
    public class Employee
    {
        [PrimaryKey, AutoIncrement, Column("_id")]
        public int Id { get; set; }
 
        [Column("_last_name")]
        public string LastName { get; set; }
 
        [Column("_name")]
        public string Name { get; set; }
 
        [Column("_patronymic")]
        public string Patronymic { get; set; }
 
        [ManyToMany(typeof(ProjectEmployee), CascadeOperations = CascadeOperation.All)]
        public List<Project> Projects { get; set; }
    }
 
    [Table("ProjectEmployeess")]
    public class ProjectEmployee
    {
        [PrimaryKey, AutoIncrement, Column("_id")]
        public int Id { get; set; }
        
        [ForeignKey(typeof(Project))]
        //[OneToMany(CascadeOperations = CascadeOperation.All)]
        [Column("_project_id")]
        public int ProjectId { get; set; }
 
        [ForeignKey(typeof(Employee))]
        //[OneToMany(CascadeOperations = CascadeOperation.All)]
        [Column("_employee_id")]
        public int EmployeeId { get; set; }
    }
Каскадное удаление не работает. Прочитала, что поддержка внешних ключей по умолчанию выключена, поэтому после создания подключения выполняю команду "PRAGMA foreign_keys = ON;", но это не помогает.
Похоже, я не очень понимаю, куда прописывать сам атрибут каскадного удаления
Создание базы данных:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class GenericRepository
    {
        private SQLiteConnection database;
        public GenericRepository(string databasePath)
        {
            database = new SQLiteConnection(databasePath);
            
            SQLiteCommand command = database.CreateCommand("PRAGMA foreign_keys = ON;");
            command.ExecuteNonQuery();
 
            database.CreateTable<Employee>();
            database.CreateTable<Project>();
            database.CreateTable<ProjectEmployee>();
        }
 
/*................*/
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.10.2022, 10:38
Ответы с готовыми решениями:

Каскадное удаление в БД
Помогите, пожалуйста, с удалением строк из таблицы. Выдает ошибку: &quot;violated - child record found&quot;. Мне подсказали что тут необходимо...

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

Каскадное удаление
Добрый день! Имею дерево отделов и под оделов, храню все водной таблице. Хотелось бы при удалении родителя, что бы все дочерние ветки...

1
Модератор
 Аватар для D1973
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,401
Записей в блоге: 3
20.10.2022, 05:05
Цитата Сообщение от sofochchka94 Посмотреть сообщение
Похоже, я не очень понимаю, куда прописывать сам атрибут
Похоже, Вы не совсем понимаете, в каком разделе нужно задавать подобные вопросы.
Я вот в упор не понимаю, что вопрос по C# делает в разделе SQLite.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.10.2022, 05:05
Помогаю со студенческими работами здесь

Каскадное удаление
Здравствуйте нужна помощь я вот сделал запрет на каскадное удаление но при удалении вылетает ошибка то что тип каксдного удаление не...

Каскадное удаление
Доброго времени суток! Проблема следующая, использую MySQL Workbench 6.0 визуально создаю БД, связи между таблицами, устанавливаю on update...

Каскадное удаление
Добрый день Подскажите, как правильно создать таблицу, в которой осуществляется каскадное удаление. Имею простую базу ...

Каскадное удаление
Есть маленькая база, в ней связанные таблицы, работаю с ней через орм. Вопрос по поводу связанных таблиц - пока все связанные данные удаляю...

Каскадное удаление строки из БД
Добрый день! Вообщем у меня такая проблема: создал в ERwin информационную систему. Слил ее в сервак. Подключаюсь к бд через basic. ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru