powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
45 сообщений из 45, показаны все 2 страниц
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36712321
horgh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Базу данных MSSQL рисую в дизайнере VS2010, использую LINQ.
При создании связи по внешнему ключу не понятно как задать правило на удаление/изменение родительской записи.
Пробовал вручную редактировать dbml файл, добавляя в тег <Association/> атрибуты:
Код: plaintext
DeleteRule="CASCADE" DeleteOnNull="true"
Редактирование отражается на файле, содержащем сущностные классы и DataContext, однако при вызове метода DataContext.CreateDatabase() сгенерированные запросы не содержат директив
Код: plaintext
ON DELETE CASCADE
Пройдя обратным путем, создав на сервере БД, содержащую таблицу с соответствующими связями, при помощи того же дизайнера и ServerExplorer'а в VS2010 получил dbml файл, никаких отличий от того, что было сделано вручную, найти не смог.

Подскажите, пожалуйста,
1)есть ли способ задать правила на удаление/изменение записи кроме как через dbml файл?
2)чего не хватает в описанной схеме, почему запрос, генерируемый DataContext.CreateDatabase(), не содержит указанных директив?
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36712961
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А родительскую-то зачем грохать?
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36713034
horgh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему нет? Отчего не может потребоваться удалить строку таблицы (или, скажем, потеряться необходимость хранения строки) даже независимо от того имеется ли на неё ссылка по внешнему ключу?
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36713046
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Пересмотрите свою схему БД
2. Переопределяйте OnDeleted и там руками грохайте родителя.
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36713119
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buredПересмотрите свою схему БД
Неужто никогда не встречались с каскадными удалениями?
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36713134
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУburedПересмотрите свою схему БД
Неужто никогда не встречались с каскадными удалениями?
с каскадными удалениями родителя - нет не приходилось, извините.
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36713145
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, а в чём сакральный смысл удалять родоков? В потомками ещё понятно - надо что-то делать с внешним ключом. А тут не пойму никак...
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36713147
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buredс каскадными удалениями родителя - нет не приходилось, извините.
Хм. Прошу прощения, а, разве, суть каскадности заключается не в удалении родителя(-ей) и осталных референсных кортежей?
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36713149
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buredМСУ, а в чём сакральный смысл удалять родоков? В потомками ещё понятно - надо что-то делать с внешним ключом. А тут не пойму никак...
Как в чём? Ну не нужна Вам запись родителя и всех его детей. Что тут еще можно сказать

P.S. Представьте ситуацию, есть родительская запись и 100 чилдов. Мне нужно 101 раз жмакать кнопку "в печь!", чтобы грохнуть весь этот мусор?
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36713176
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУburedс каскадными удалениями родителя - нет не приходилось, извините.
Хм. Прошу прощения, а, разве, суть каскадности заключается не в удалении родителя(-ей) и осталных референсных кортежей?
Суть каскадности в удалении осиротевших детей
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36713183
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
horghПри создании связи по внешнему ключу не понятно как задать правило на удаление/изменение родительской записи.
никак.
Либо триггер какой. Либо руками в OnDeleting/OnDeleted
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36713269
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buredhorghПри создании связи по внешнему ключу не понятно как задать правило на удаление/изменение родительской записи.
никак.
Либо триггер какой. Либо руками в OnDeleting/OnDeleted
А зачем, если можно оно может само каскадно грохнуться?
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36713501
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да не грохаются родители вслед за детьми каскадно. Наоборот только. Поэтому у ТС и не получается.
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36713531
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buredДа не грохаются родители вслед за детьми каскадно. Наоборот только. Поэтому у ТС и не получается.
Ничё не понял. Зачем грохать детей? :) Грохать нужно родителя, а за ним пойдут в печь и ребятишки
Мож ТС с референсами напутал.
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36713534
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дрюня, по-моему, Вы сами уже запутались, кто кого должен грохать
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36713540
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну или так, если нет желания установить другое правило для "братьев". Например обнулять внешний ключ. Я поэтому и сказал ТС пересмотреть архитектуру.
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36713546
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУДрюня, по-моему, Вы сами уже запутались, кто кого должен грохать
Нихуа. Перечитай весь тред. Я глаголил Истину изначально. А вот ты попутал предков и потомков децл.
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36713549
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУДрюня, по-моему, Вы сами уже запутались, кто кого должен грохать

ТСПри создании связи по внешнему ключу не понятно как задать правило на удаление/изменение родительской записи.
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36713553
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё, врубился

Вот это

buredА родительскую-то зачем грохать?

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

P.S. Тогда это

МСУДрюня, по-моему, Вы сами уже запутались, кто кого должен грохать

больше про меня, чем про Вас
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36713560
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

ну да. Я ж говорю у ТС как-то через попенс всё.
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36713562
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bured, ага, тогда по поводу кривизны схемы БД +1
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36714413
horgh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И все же меня не так поняли, я, видимо, некорректно выразился...родителя не требуется убивать при удалении потомка...требуется при необходимости удаления родителя каскадно удалять всех потомков, самый тривиальный вариант использования каскадного удаления записей, не более...
Проблема в том, что БД генерится при помощи Linq2SQL и ON DELETE CASCADE не попадает в генерируемые SQL запросы, хотя в dbml файле соответствующие атрибуты выставлены
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36714414
horgh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HorghПри создании связи по внешнему ключу не понятно как задать правило на удаление/изменение родительской записи
Имелось в виду правило, которое должно выполняться при удалении\изменении родительской записи (не потомков), а следовательно - определяет, что должно происходить с потомками при удалении этого самого родителя.
Ежу ж ведь понятно, что если дочернюю запись удаляют, родителю вообще по барабану...
buredСуть каскадности в удалении осиротевших детей
...в самую точку, это и нужно, но не получается!
Все должно при вызове CreateDatabase автоматически создаваться, стало быть я не верно dbml файл составил, а что не верно абсолютно не ясно...атрибуты DeleteRule и DeleteOnNull ставил и потомку, и родителю, и одновременно обоим...один фиг LINQ генерит SQL-запрос, в котором нет ON DELETE CASCADE...хотя в файл *.designer.cs эти атрибуты проставляются
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36715361
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроме dbml в схеме БД правило должно стоять.
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36716904
horgh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
О какой схеме Вы говорите?
Схема и генерируется на основе dbml файла...Любое изменение на графической форме схемы БД фактически редактируют dbml-файл...графический дизайнер ни что иное, как средство редактирования оного, да и служит для отражение структуры БД на сущностные файлы, которые фактически также генерируются на основе dbml файла...
Если речь шла о схеме БД в дизайнере, то мне не удалось найти вообще никаких средств задания подобных правил, только напрямую отредактировать dbml файл, однако ожидаемого результата не оказалось.
Вы не могли бы подсказать, где можно эти правила задавать?
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36716982
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот что удалось нагуглить по сабжу.

цитатаLINQ to SQL does not provide a cascade delete feature. Your database must be setup to do this on its own. The 'DeleteRule' property in the mapping is only used during a CreateDatabase call to tell the database to do cascade delete for this relationship, and to warn LINQ to SQL that cascading could happen.

P.S. Опять же, ссылка на документацию было бы лучше, но ничего не нашел... :(
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36717001
horgh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огромное спасибо за ссылку!!!!!
Все ж мало я гуглю)))
Ща изучим!
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36717049
horgh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Безусловно интересные соображения по поводу, что в общем случае каскадное удаление может оказаться слишком сложным для реализации, поэтому такая фитча и отсутствует...
Frans BoumaI'm not sure why Linq to Sql gives up here, but in general in o/r mappers: cascading deletes aren't really going to work. Sure there are cases where they do work, but in general they don't because with 2 or more paths from entity E1 to entity E2 in the model, it's already not possible to have E2 instances deleted when E1 is deleted in most cases. SqlServer for example will also give up in some situations in this case.
Как я понимаю следующее:
авторLINQ to SQL does not provide a cascade delete feature. Your database must be setup to do this on its own.
1)LINQ to SQL не предоставляет средства каскадного удаления. Ваша СУБД должна быть настроена на каскадное удаление вручную.
авторThe 'DeleteRule' property in the mapping is only used during a CreateDatabase call to tell the database to do cascade delete for this relationship, and to warn LINQ to SQL that cascading could happen.
2)Свойство 'DeleteRule' используется только при выполнении метода CreateDatabase, чтобы сообщить СУБД о том, что по этой связи необходимо выполнять каскадное удаление, а также предупредить Linq2SQL об этом.

Не понятно, как СУБД уведомляется, если в результате CreateDatabase CASCADE на этой связи не выставляется, а остается NO ACTION

P.S.: по всей видимости, проще положится на себя и удалить все имеющиеся дочерние строки вручную...хотя, скажем если Linq этого и не умеет, то из БД при помощи, например, хранимой процедуры можно вызвать автоматическое каскадное удаление, поэтому флаг CASCADE должен как-то выставляться)))
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36717756
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я это и говорил.
buredКроме dbml в схеме БД правило должно стоять.
У меня работает нормально.
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36717760
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Накати update
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36717769
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗЫ. Чтобы накатить апдейт на внешний ключ, его надо грохнуть и создать с нужной опцией.
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36719087
horgh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bured, я Вас все равно не понимаю...
Понятно, что в самой СУБД на нужной связи должно CASCADE стоять, но важно, чтобы это не вручную делать, а чтобы при выполнении DataContext.CreateDatabase() данный флаг проставлялся...я ещё понимаю, если б в LINQ вообще это отсутствовало, но ведь есть, а не работает...
buredЧтобы накатить апдейт на внешний ключ, его надо грохнуть и создать с нужной опцией.
БД, в том числе и связи по внешнему ключу генерируются при помощи DataContext.CreateDatabase() на основе имеющегося dbml файла, все запросы SQL генерируются LINQ автоматически...и уж если в dbml файле указано, что удаление должно быть каскадным, то логично ожидать, что сгенерированный LINQ запрос будет содержать что-то в подобное:
Код: plaintext
1.
ALTER TABLE [MealTag]
  ADD CONSTRAINT [Meal_MealTag] FOREIGN KEY ([FK_MealId]) REFERENCES [Meal]([MealId]) ON DELETE CASCADE
Но вот только фраза "ON DELETE CASCADE" почему то отсутствует...эта самая "нужная опция" должна автоматически генерится!
Вот и вопрос: должна ли??? Или все-таки LINQ этого ни хрена не поддерживает, поэтому при генерации БД при помощи CreateDatabase нужно вручную в БД заливать не только тригеры, хранимые и пользовательские процедуры, но и при необходимости правила удаления\изменения по связям....
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36719102
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хз, у меня удаляется каскадно. LINQtoSQL тоже. Ты где-то запутался.
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36719108
horgh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Направление какое:
1)БД генерится при помощи LINQ
2)или dbml схема генерится на основе БД (при помощи SQLMetal или дизайнера VS)
???
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36719504
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buredхз, у меня удаляется каскадно. LINQtoSQL тоже. Ты где-то запутался.
Андрей, речь о CreateDatabase. Этот метод действительно создает БД и сущности, игноря заданные DeleteRule в них...
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36719594
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36719729
horgh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огромное спасибо!!!!!!!!!!!
Интересно, что это сообщение от 2008 года...сегодня framework 4.0 уже, а до сих пор ничего не исправлено..., хотя, может, и есть какие-нибудь исправления..
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36719737
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообщем, нашел, как излечить баг. Генератор почему-то не добавляет EntitySet DeleteRule.
Поможем ему ручками: добавим DeleteRule = "CASCADE" в EntitySet парентовой сущности (Activity):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
[global::System.Data.Linq.Mapping.AssociationAttribute(Name = "Activity_Detail", Storage = "_Details", ThisKey = "ActivityID", OtherKey = "ActivityID", DeleteRule = "CASCADE")]
public EntitySet<Detail> Details
{
	get
	{
		return this._Details;
	}
	set
	{
		this._Details.Assign(value);
	}
}
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36719823
horgh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я замечание по ссылке прочитал, там ж написано, что файл designer.cs перегенеривается каждый раз при построении проекта, то есть его править каждый раз придется..?
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36719837
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
horghфайл designer.cs перегенеривается каждый раз при построении проекта, то есть его править каждый раз придется..?
Файл designer.cs перегенеряется только при ручном Run Custom Tool или после того, как что-то меняем в dbml. При билде проекта designer.cs остается таким же, как был.

P.S. Я Вас понимаю, но ничего не поделаешь. Даже partial класс не спасет, так как нам нужно подправить атрибут члена класса...
P.S2. Все вопросы к тупым индусам, которые генерацию DeleteRule воткнули в чилда, а не в родителя. Уродынах...
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36719843
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Могу посоветовать, разве что, забить на каскадность, если юзаете Linq to SQL. Каскадность выполнять ручками через свой DAL. Я бы так и сделал.
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36719994
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАндрей, речь о CreateDatabase. Этот метод действительно создает БД и сущности, игноря заданные DeleteRule в них...
А, ну да. Натыкался на это не раз. Я что-то думал "так и задумано". :)
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36720041
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот если решить бы задачу переопределения атрибутов, то проблем бы не было...

Вот простая задачка:

Имеет автогенеренный класс Foo (его трогать нельзя):

Код: plaintext
1.
2.
3.
4.
public partial class Foo
{
    [global::System.Data.Linq.Mapping.AssociationAttribute(IsUnique=true)]
    public int FooProperty { get; set; }
}

Теперь я создаю свой partial class Foo:

Код: plaintext
1.
2.
3.
public partial class Foo
{

}

Задача: переопределить AssociationAttribute в FooProperty на IsUnique = false.

P.S. Пробовал через MetadataType - нихрена не получается... Цепляется только первый класс.
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36720384
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в Entity Framework всё правильно работает:

Код: plaintext
1.
2.
3.
4.
5.
using (var model = new testEntities())
using (ObjectContext ctx = new ObjectContext(model.Connection as EntityConnection))
{                
    string sql = ctx.CreateDatabaseScript();
    // ctx.CreateDatabase();
}

SQL
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create table [dbo].[Activities] (
    [ActivityID] [int] not null identity,
    [Name] [varchar]( 200 ) not null,
    [Date] [datetime] not null,
    primary key ([ActivityID])
);
create table [dbo].[Details] (
    [DetailId] [int] not null identity,
    [Title] [nvarchar]( 50 ) not null,
    [ActivityID] [int] not null,
    primary key ([DetailId])
);
alter table [dbo].[Details] add constraint [FK_Details_Activities] foreign key ([ActivityID]) references [dbo].[Activities]([ActivityID]) on delete cascade;


P.S. Еще один камень в огород L2S и еще один плюс смотреть в сторону EF...
...
Рейтинг: 0 / 0
LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
    #36722417
horgh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ещё раз спасибо!))
Да уж атрибут класса не переопределишь..partial класс штука удобная, но не на столько)) Методы частичными они сделали, а вот атрибуты..))
Скорее всего? так же остановимся на варианте, где каскадное удаление происходит минуя L2S, да и генерировать соответствующие правила в БД тоже придется дополнительными запросами помимо CreateDatabase....

С другой стороны, к своему позору, EntityFramework нужно тоже только изучать, а задачку уже взялись решать на L2S, и времени на изучение ещё чего-то нового уже нету. Прочитав вот эту статейку http://habrahabr.ru/linker/go/37390/, создалось впечатление, что EntityFramework скорее подходит для нашего подхода в разделении уровней доступа к данным и сущностей предметной области. Однако ж пока L2S...))
...
Рейтинг: 0 / 0
45 сообщений из 45, показаны все 2 страниц
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQtoSQL: как задать атрибут DeleteRule на удаление родительской записи по внешнему ключу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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