2009-12-16 1 views
2

Есть ли возможность установить отношение OneToOne (мощность) при генерации dbml с помощью SQLMetal? По умолчанию dbml-схема, сгенерированная с отношением OneToMany.OneToOne отношение (мощность) в LINQ to SQL с SQLMetal

+0

- это отношение, указывающее на первичный ключ на обеих таблицах? Или вторичная таблица имеет другой первичный ключ, и отношения идут в столбец внешнего ключа? –

+0

Связь, указывающая на первичный ключ на обеих таблицах. – Sasha

ответ

2

Вы используете дизайнер DBML? Если это так, вы можете щелкнуть правой кнопкой мыши стрелку, представляющую взаимосвязь, и выбрать Свойства. Свойство Cardinality можно затем установить в диалоговом окне свойств OneToOne.

+0

Да, я могу использовать конструктор DBML, но я хочу автоматизировать этот процесс! – Sasha

+0

Если вы хотите, чтобы все * отношения были OneToOne, вы могли написать скрипт некоторого описания для анализа файла DBML (который является просто XML) для элементов 'Association' и добавить атрибут' Cardinality = «One» 'to each элемент. –

+0

В моем случае мне нужно только два отношения, чтобы быть OneToOne. Но кажется, что в любом случае я напишу какой-то сценарий. – Sasha

0

Я использую SqlMetal для создания файла Dbml, а затем я использую xslt для изменения его содержимого (используя эту базу xslt: http://blogs.msdn.com/ploeh/archive/2008/04/10/AutomaticallyGeneratingLINQToSQLModelsFromTSQL.aspx), например. изменение мощности или изменение типа для Enums.

+0

Спасибо, я попробую ваш подход. – Sasha

+0

также кажется, что linq2sql поддерживает ссылки на главные ключи с обеих сторон, поэтому просто создайте одну ссылку (просто сравните нормальное отношение «один ко многим») и установите эту связь с кардинальной единицей. –