Нарушено ограничение множественности Entity Framework 6 - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть кое-что, чего я не понимаю. Этот похож на мой случай.У меня есть объекты BaseEntity, Product, Supplier, Contract и ProductSupplierForContract, все они наследуются от BaseEntity.

Базовый объект:

public class BaseEntity
{
    public int ID { get; set; }
    // other properties that are not entities by themself
}

Объект продукта:

[Required]
public ICollection<Supplier> Suppliers { get; set; }

[Required]
public ICollection<ProductSupplierForContract> ProductSupplierForContracts  { get; set; }

public  ICollection<Contract> Contracts { get; set; }

ПоставщикОбъект:

public ICollection<ProductSupplierForContract> ProductSupplierForContracts  { get; set; }
public ICollection<Product> Products { get; set; }

ProductSupplierForContract Объект:

public string ProductnumberValue { get; set; }    

public Supplier Supplier { get; set; }
public int Supplier_Id { get; set; }

public Product Product { get; set; }
public int Product_Id { get; set; }

public Contract Contract { get; set; }
public int? Contract_Id { get; set; }

Объект контракта:

[Required]
public ICollection<Product> Products { get; set; }
public ICollection<Supplier> Suppliers { get; set; }
public ICollection<ProductSupplierForContract> ProductSupplierForContracts { get; set; }

Возможен и разрешен следующий сценарий: 1 Контракт может выполнятьсянесколько экземпляров одного продукта, НО от другого поставщика .Поэтому я создал объект ProductSupplierForContract (PSFC), который будет содержать это отношение 1product-1supplier-1productnumber (значение) -1contract .

Когда я редактирую 1 существующий продукт, который уже имеет 1 экземпляр PSFCи добавить еще один экземпляр PSFC, содержащий другой PK, ProductId & SupplierId, я получаю эту ошибку:

{"Multiplicity constraint violated. The role 'ProductSupplierForContract_Product_Target' of the relationship 'ContractCare.Models.ProductSupplierForContract_Product' has multiplicity 1 or 0..1."}

Я не понимаю почему, потому что не так, чтобы я мог иметь:

PSFC 1 
PK 1
ProductId 1
SupplierId 1

PSFC 2
PK 2
ProductId 1
SupplierId 2

Почему я (как описано в связанном посте выше) должен иметь отношение PSFC ко многим ко многим продуктам?

Спасибо за любые отзывы!С уважением.

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Расширение по ссылке, которую предоставил Апарна Гадгил , один из комментариев, опубликованных Артуро Эрнандесом , исправил ошибку, которая у меня была, поэтому я собираюсь отметить это как решенную, так как моя первоначальная проблемабыла ошибка.

Цитата:

Проблема в том, что detachedChild.parent должен быть назначен attachParent.

foreach(var detachedEntity in detachedEntities)
{
 attachedEntity.ChildEntities.Add(detachedEntity); 
 detachedEntity.ParentEntity = attachedEntity;
}

В моем случае мне пришлось прикрепить родительский объект (продукт, который мы обновляем) к ProductSupplierForContract.Product .Создание новой сущности, подобной предложенной в ответе, уже было для меня делом, и другие вещи, такие как присоединение и т. Д., Не исправили это для меня.

Поскольку я не опубликовал никакого кода о том, как явыполнял это действие, это было не очень полезно, чтобы быть в состоянии помочь мне, и я, конечно, постараюсь быть более конкретным в будущем:).

С уважением и спасибо!

0 голосов
/ 29 ноября 2018

Следующая ссылка может помочь вам больше в этой проблеме!

  1. Нарушено ограничение множественности.Роль '...' отношения '...' имеет кратность 1 или 0..1
...