Как настроить постоянный объект для «один ко многим» и «многие ко многим одновременно»? [DevExpress] - PullRequest
0 голосов
/ 08 апреля 2019

У меня проблема со следующей схемой, я прикрепил ее. Я хочу запросить из моей базы данных только один объект с классом "Manufacturer". Как:

var res = new XPQuery<Manufacturer>(session);

А затем запросить всю информацию, связанную с моим состоянием в LINQ. Я пробовал XPLiteObject, XPObject, Association attribute, NoForeignKey Attribute, XPOCollection и много чего, но ничто не помогло мне.

Я перепробовал много подходов, и каждый раз у меня появляется новое исключение, такое как: SelectMany - метод не поддерживается. Не могу установить внешний ключ в таблице. Дубликат первичного ключа.

Мой вопрос: как описать классы для нормального извлечения данных из БД? TableScheme

UPD: Мое решение сейчас: использовать .ToList () для каждого объекта а затем используйте linq-запрос для объединения данных и сделайте необходимый запрос.

var manufacturer = new XPQuery<Manufacturer>(session).ToList();
var cars = new XPQuery<Car>(session).ToList();
var countries = new XPQuery<Country>(session).ToList();

var result = from m in manufacturer ....

1 Ответ

0 голосов
/ 09 апреля 2019

Итак, я нашел решение своего вопроса.Я скачал DevExpress , который может добавлять шаблоны для Visual Studio.Затем я выбираю Добавить новый элемент в мой проект с именем « DevExpress ORM DataModel Wizard ».Этот мастер может создавать постоянные объекты для существующей базы данных .После этого я могу запросить базу данных со следующим синтаксисом:

var manufacturer = new XPQuery<Manufacturer>(session).Select(x => x....)...;

Но если вы хотите использовать .SelectMany () в вашем запросе LINQ, вы должны использовать .ToList () , а затем используйте .SelectMany () .Я столкнулся с множеством проблем, когда пытался присоединиться или выполнить некоторые другие операции, связанные с LINQ.Хорошо, если вы получили какие-то ошибки, сначала после .Select () try. ToList () и затем выполните вашу операцию.

...