EFCode First: удаление объекта-значения с двумя связями сущностей - PullRequest
1 голос
/ 12 мая 2011

У меня проблемы с удалением объекта Value из моей базы данных, потому что он имеет два отношения с разными сущностями, он просто устанавливает один внешний ключ в null, который выбрасывает. Вот мой домен:

public class Product : IEntity
{
    public int Id { get; set; }
    public string ModelNumber { get; set; }
    public ICollection<ProductQuantity> ProductQuantities { get; set; }
}

public class Project: IEntity
{
    public int Id { get; set; }
    public string SpecConnect { get; set; }
    public virtual ICollection<ProductQuantity> ProductQuantitys { get; set; }
}

public class ProductQuantity
{
    public int Id { get; set; }
    public virtual Product Product { get; set; }
    public virtual Project Project { get; set; }
}

Вот мой код для удаления ProductQuantity из проекта:

var product = _productRepository.GetById(id);
var project = _projectRepository.GetById(projectId);
var productQuantity = project.ProductQuantitys.SingleOrDefault(x => x.Product == product);

project.ProductQuantitys.Remove(productQuantity);

Спасибо за любые мысли!

1 Ответ

0 голосов
/ 12 мая 2011

Это мало.Вы должны удалить объект как из Product, так и Project, после чего вы должны удалить его, вызвав context.ProductQuantities.Remove(...)

Удаление объекта из этих коллекций приведет к удалению только определенной вами независимой ассоциации.Это приводит к установке FK в базе данных на ноль, но не к удалению связанного объекта.

Кстати.объект значения не имеет идентификатора / ключа.Объект значения в EF является сложным типом.

...