Существует обходное решение, которое не совсем то, что вам нужно, но позволяет вам практически не реагировать на прикосновение к скриптлетам весьма минимальным образом. Вы можете использовать скриптлет, чтобы поместить значение в переменную JSTL и использовать чистый код JSTL позже на странице.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="com.whichever.namespace.Addresses" %>
<c:set var="ourUrl" value="<%=Addresses.URL%>"/>
<c:if test='${"http://www.google.com" eq ourUrl}'>
Google is our URL!
</c:if>
Однако существует ли другой способ «связывать» эти таблицы вместе без наличия объекта Merchant?
blockquote>No. Отношение «многие ко многим» с EF - это независимые ассоциации, т. Е. В вашей модели нет свойства внешнего ключа. Вам нужно управлять отношениями, используя две коллекции. Это единственный способ.
Но, см. Следующий пункт ...
... если есть быстрый способ сделать это соотношение без необходимости звонить база данных, чтобы получить объект Merchant, поскольку у нас уже есть действительный MerchantGuid.
blockquote>Чтобы создать взаимосвязь, вам не нужно загружать существующий объект
Merchant
из базы данных. Вы можете создать объект «заглушка» с свойством ключа, установленным в действительномMerchantGuid
, а затем привязать его к контексту. Для EF это сущность в состоянииUnchanged
, которая ведет себя так, как если бы она была загружена из базы данных:var newNumber = new Number { NumberGuid = Guid.NewGuid(), PhoneNumber = "55555555555" }; var merchant = new Merchant { MerchantGuid = alreadyKnownMerchantGuid, Numbers = new HashSet<Number>() }; context.Merchants.Attach(merchant); merchant.Numbers.Add(newNumber); context.SaveChanges();
Здесь нет запроса к базе данных.
SaveChanges
создаст новую записьNumber
и новую запись отношения в таблице соединений.