Entity Framwork Code First 응용 프로그램을 만들고 목록에 엔터티를 두 번 이상 추가 할 때 문제가 발생합니다.Entity Framework - 목록에 두 번 이상 항목 추가
다음과 같은 두 클래스가 있는데, 다 대다 관계에 대해 서로를 참조합니다.
Orders
- OrderId (PK, int)
:
public class Order
{
public virtual List<OrderItem> OrderItems { get; set; }
}
public class OrderItem
{
public virtual List<Order> Orders{ get; set; }
}
이
내 데이터베이스에서 다음과 같은 세 개의 테이블을 생성합니다.OrderItems
- OrderItemId (PK, int)
.
OrderOrderItems
- Order_OrderId (PK,FK,int)
- OrderItem_OrderItemId (PK,FK,int)
는 코드에서, 나는 다음을 수행 할이이 데이터베이스에 지속됩니다 때
private void AddOrderItemsTest
{
OrderItem orderItem = GetOrderItem(); // gets an existing order item from the DB
var order = new Order();
order.OrderItems.Add(orderItem);
order.OrderItems.Add(orderItem); // add the order item to the list a second time
context.Orders.Add(order);
}
는, 단 하나의 orderItem
개체가 목록에 추가됩니다. OrderOrderItems 테이블에서 OrderItem_OrderItemId는 PK이므로 고유해야합니다. 즉, EF는 같은 유형의 orderItem을 두 번 이상 목록에 추가 할 수 없도록 테이블을 디자인했습니다.
EF에 추가 할 수있는 데이터 주석이있어 동일한 유형의 항목을 두 개 이상 추가 할 수 있습니까?
이 질문은 같은 질문을하는 것으로 보입니다. http://stackoverflow.com/questions/7191132/entity-framework-adding-the-same-entity-twice-in-many-to-many-relationships 그 질문 그래도 3 년이 지났으니 지금과 그 사이에 아무 것도 변하지 않았다고 확신하지 못하면 (지금 EF6에 있습니다.) 중복으로 표시하지 마십시오. –
같은 항목을 컬렉션에 두 번 추가하는 목적은 무엇입니까? 테이블에 저장된 데이터를 어떻게 예상합니까? * OrderOrderItems *의 중복 된 여러 행 또는 * OrderItems * 및 * OrderOrderItems *의 두 개의 별개 레코드 – Vladimirs
@Vladimirs 고객이 동일한 항목을 두 개 구입하려고하는 경우 목록에 두 번 추가합니다. 'OrderOrderItems' 테이블에 두 개의 중복 된 행이 생길 것으로 기대하지만, 실제로 EF가 어떻게 구현하는지 신경 쓰지 않습니다! –