Как вставить в таблицу соединений, сгенерированную Entity Framework 6 [duplicate]

Существует обходное решение, которое не совсем то, что вам нужно, но позволяет вам практически не реагировать на прикосновение к скриптлетам весьма минимальным образом. Вы можете использовать скриптлет, чтобы поместить значение в переменную 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>
0
задан Sean 2 December 2012 в 03:27
поделиться

1 ответ

Однако существует ли другой способ «связывать» эти таблицы вместе без наличия объекта Merchant?

No. Отношение «многие ко многим» с EF - это независимые ассоциации, т. Е. В вашей модели нет свойства внешнего ключа. Вам нужно управлять отношениями, используя две коллекции. Это единственный способ.

Но, см. Следующий пункт ...

... если есть быстрый способ сделать это соотношение без необходимости звонить база данных, чтобы получить объект Merchant, поскольку у нас уже есть действительный MerchantGuid.

Чтобы создать взаимосвязь, вам не нужно загружать существующий объект 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 и новую запись отношения в таблице соединений.

2
ответ дан Slauma 18 August 2018 в 23:58
поделиться
  • 1
    Я нашел решение вчера вечером, но +1 и согласился с тем решением, которое я придумал! :) – Sean 3 December 2012 в 02:16
Другие вопросы по тегам:

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