powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Отношения и ограничения
4 сообщений из 4, страница 1 из 1
Отношения и ограничения
    #32795315
Gazon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть DataSet, в него загружено 2 таблицы, создаем отношение один ко многим:
Код: plaintext
1.
2.
3.
this.relationStoresDiscounts = new DataRelation("StoresDiscounts", new DataColumn[] {
                        this.tablestores.stor_idColumn}, new DataColumn[] {
                        this.tablediscounts.stor_idColumn}, false);
            this.Relations.Add(this.relationStoresDiscounts);
Правильно ли я понимаю, что здесь будет создано еще и ограничение ForeignKye на дочерней таблице?
И правильно ли я понимаю, что здесь будет создано ограничение PrimeryKye на родительской таблице?
Потому что из Sql Server'a я знаю, что отношения между двумя таблицами - это создание ограничений первичного ключа и вторичного(внешнего) ключа. Здесь это тоже самое?

И еще вопрос:
заглянул в код, который генерирует мастер для доступа к бузе:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
ForeignKeyConstraint fkc;
            fkc = new ForeignKeyConstraint("StoresDiscounts", new DataColumn[] {
                        this.tablestores.stor_idColumn}, new DataColumn[] {
                        this.tablediscounts.stor_idColumn});
            this.tablediscounts.Constraints.Add(fkc);
			
            fkc.AcceptRejectRule = System.Data.AcceptRejectRule.None;
            fkc.DeleteRule = System.Data.Rule.Cascade;
            fkc.UpdateRule = System.Data.Rule.Cascade;
            this.relationStoresDiscounts = new DataRelation("StoresDiscounts", new DataColumn[] {
                        this.tablestores.stor_idColumn}, new DataColumn[] {
                        this.tablediscounts.stor_idColumn}, false);
            this.Relations.Add(this.relationStoresDiscounts);
Я не могу понять, почему он сначала создает ограничение типа ForeingKye, а потом создает отношение, и почему он вообще создает ограничение ForeingKey, если при создании отношения это ограничение добавляется автоматически? И почему он в конструкторе new DataRelation(... последним параметром передает значение false, если ограничение перед этим создалось?
И почему, если удалить в прилождении родительскую строку, а потом попытаться обновить данные в базу, то происходит исключение, говорящее, что DELETE конфликтует с ограничением в базе?
...
Рейтинг: 0 / 0
Отношения и ограничения
    #32795455
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если последний параметр в конструкторе DataRelation
createConstraints = false, то ни каких constaint'ов создано не будет (см. MSDN).

если параметр = true, то будет создан UniqueConstraint для parent таблицы и ForeignKeyConstraint для child таблицы.
...
Рейтинг: 0 / 0
Отношения и ограничения
    #32795516
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+
авторесли удалить в прилождении родительскую строку, а потом попытаться обновить данные в базу, то происходит исключение, говорящее, что DELETE конфликтует с ограничением в базе?если в child таблице SQL сервера нет FOREIGN KEY ON DELETE CASCADE, то сначала нужно обновлять child таблицу, а только потом parent таблицу. иначе имеем, что имеем - SqlException.
...
Рейтинг: 0 / 0
Отношения и ограничения
    #32800484
Gazon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за помощь.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Отношения и ограничения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]