1

Я работаю с DAL2 в DNN 7+.Как использовать составные клавиши с DAL2 в DNN 7+?

У меня есть таблица базы данных с первичным ключом, созданным из полей 2-varchar (50).

Каков правильный способ объявления многополюсного первичного ключа в атрибутах объекта?
я обычно делаю:

[PrimaryKey("myField")] 

Должен ли я просто добавить второй PrimaryKey атрибута?

Вторая часть вопроса - как получить данные из базы данных.
Я хотел бы использовать функцию GetById(), потому что она включает в себя кеширование, но не поддерживает несколько полей. Я застрял с помощью метода Find() и обрабатывал кеширование вручную или что лучший способ выбрать объекты, которые используют несколько первичных ключей для нескольких полей?

«Посмотрите на небо так же сильно, как на экране!»

ответ

1

DAL2 не поддерживает составные клавиши.

Лучший способ, которым я нашел, чтобы обойти это ограничение, - это изменить таблицу базы данных. Я использую Auto-increment int 'id' для первичного ключа и устанавливаю уникальное ограничение на поля, которые я хотел использовать в качестве составного ключа.

Для этого потребуется использовать метод .Find(), который предотвращает кеширование. Если требуется кэширование, это необходимо сделать вручную. Когда кеш установлен вручную, он также должен быть очищен вручную. Если вы используете метод репозитория, обязательно очистите кеш при обновлении или удалении объекта.

«Посмотрите на небо так же сильно, как на экране!»