Платформа объекта - Linq к объектам - проблемы запроса Many-Many

В файле application.properties или файле yaml проверьте spring.datasource.url и удалите флаг IFEXISTS = TRUE;.

Если флаг установлен в true, соединение устанавливается только при наличии базы данных. Для ссылки на флаг см. http://www.h2database.com/html/features.html#database_only_if_exists

Файл свойств приложения должен выглядеть следующим образом

application.properties

h2.datasource.driver-class-name=org.h2.Driver
h2.datasource.url=jdbc:h2:file:~/test;DB_CLOSE_ON_EXIT=TRUE;FILE_LOCK=NO
h2.datasource.username=sa
h2.datasource.password=

spring.h2.console.enabled=true
spring.h2.console.path=/h2-console/

Выглядит как показано ниже (Тестовое соединение успешно)

enter image description here

6
задан JD. 27 April 2009 в 14:06
поделиться

4 ответа

Я не уверен, что вы хотите получить. Список клиентов с интересом клиента и интерес? Просто запустите запрос на интерес клиента.

context.CustomerInterest.
   Where(ci => ci.Interest.InterestName == "Football").
   Select(ci => new
   {
      Customer = ci.Customer,
      CustomerInterest = ci,
      Interest = ci.Interest
   });

Но это очень избыточно. Почему бы просто не получить совпадающие интересы клиентов?

IEnumerable<CustomerInterest> customerInterests = context.CustomerInterest.
   Where(ci => ci.Interest.InterestName == "Football");

Вы по-прежнему можете обращаться к другой информации без необходимости ее явного сохранения.

foreach (CustomerInterest customerInterest in customerInterests)
{
   DoSomething(customerInterest);
   DoSomething(customerInterest.Customer);
   DoSomething(customerInterest.Interest);
}
3
ответ дан 8 December 2019 в 18:41
поделиться

Если вы пытаетесь сделать его универсальным, лучше использовать сущность sql [Esql]. Coz L2E не поддерживает где для коллекций в запросе linq.

Нельзя использовать

customer.Interests.Where (интереса => интереса. Имя == 'FootBall')

Запрос будет выглядеть следующим образом. .

context.CreateQuery (@ "SELECT VALUE Customer ОТ клиента, ГДЕ ЕСТЬ (ВЫБЕРИТЕ ЗНАЧЕНИЕ ИЗ CustomerInterest ГДЕ CustomerInterest.Ineterest.Name = 'FootBall')). Включить ("Проценты");

надеюсь, это поможет!

1
ответ дан 8 December 2019 в 18:41
поделиться

Это много для LINQT. Попробуйте использовать представление в своей базе данных или работайте, как сказал Дипак Н. Лучшее

0
ответ дан 8 December 2019 в 18:41
поделиться

Try this,

var result = from c in ctx.Customer
             from i in c.Interest
             where i.InterestName == "Football"
             select c;

Hope this helps,

Ray.

7
ответ дан 8 December 2019 в 18:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: