Работа с отношениями в Subsonic - PullRequest
1 голос
/ 07 августа 2010

Я использую subsonic 3.0.3 (ActiveRecords) в моем проекте winforms. Я очень стараюсь использовать Коллекции для своих сущностей, но до сих пор я не мог этого сделать.

Пожалуйста, позвольте мне прояснить себя.

Проходя по многим учебным пособиям, я увидел, что Subsonic создаст два класса. Один - это класс коллекции, а другой - объект сущности. скажем, например, если у меня есть таблица person в моей базе данных, то subsonic создаст класс Person Entity и класс PersonCollection. Веб-сайт (извините, я забыл, какой именно) также упомянул, что мне нужно использовать инструмент под названием SubsonicCommands для выполнения такого рода операций с дозвуковым. Я загрузил ту же версию для Visual Studio 2008 с этого сайта http://oldtownit.com/media/files/SubSonicToolsSetup.zip

Я могу запустить инструмент и сгенерировать классы, но проект не будет компилироваться, потому что он ищет этот класс SubSonic.Utilities. Пожалуйста, скажите мне, где я могу найти этот класс? Я пытался найти этот класс в ~ \ Program Files \ Subsonic \ SubSonicTools \ source \, но не смог его найти.

Кроме того, я проверил код, класс коллекции все еще не генерировался. В вышеупомянутом случае, который я попробовал, было создано два класса: Person Entity Class и PersonController Class

Моя цель:

Что я пытаюсь сделать с помощью subonic, так это то, как работает LLBLGEN.

LLBLGEN Пример

скажем, например, если есть две таблицы Items и Suppliers, и они являются промежуточной таблицей ItemSuppliers, которая имеет отношение много к одному с обеими таблицами (Items и Suppliers), то в LLBLGEN я могу сделать что-то вроде

Item item = new Item (ItemFields.ItemId == 1); item.ItemSuppliers.DeleteMulti ()

, который удалит все записи, связанные с элементом, ItemId которого равен 1 в таблице ItemSuppliers. Это также может быть сделано в отношении таблицы поставщиков (конечно, внося соответствующие изменения)

Также я хотел бы знать, могу ли я вернуть все ItemSuppliers для определенного элемента (из примера выше), если я вернул родительский объект.

снова пример из LLBLGEN Item item = новый Item (ItemFields.ItemId == 1); MessageBox.Show (item.ItemSuppliers.Count.ToString ());

Приведенное выше окно сообщения отображало бы 2, если бы было 2 поставщика для Предмета (из таблицы itemSuppliers)

Эпилог:

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

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

1 Ответ

1 голос
/ 28 августа 2010

Вы начинаете с того, что говорите, что используете версию 3.0.2, но кажется, что вы используете Subsonic 2.2 и 3. Вам следует использовать одно или другое.

Класс utlities в версии 2. Загружается с: http://github.com/subsonic/SubSonic-2.0/blob/master/SubSonic/Utility.cs

...