Удалить проблемы с Nhibernate - PullRequest
       4

Удалить проблемы с Nhibernate

1 голос
/ 12 октября 2010

У меня есть два класса. «Продукт» и «Продукт» могут иметь ряд объектов класса «Атрибут»

Когда кто-то редактирует «Продукт», я хотел бы удалить все атрибуты, связанные с этим продуктом, и воссоздать новые (вторая часть работает нормально), но я получаю ошибку, которая останавливает меня при удалении атрибутов.

public ProductMapping()
    {
        Id(x => x.Id);
        Map(x => x.ProductName);
        Map(x => x.Description);
        Map(x => x.Quantity);
        Map(x => x.Price);
        Map(x => x.Live);
        HasMany(x => x.Images)
            .KeyColumn("ProductId")
            .Cascade.All()
            .Inverse();
        HasMany(x => x.Attribute)
            .KeyColumn("ProductId")
            .Cascade.All();

    }

И мое сопоставление атрибутов

    public AttributeMapping()
    {
        Id(x => x.Id);
        Map(x => x.Name);
        Map(x => x.Value);
        Map(x => x.Live);

        References(x => x.Product)
            .ForeignKey()
            .Column("ProductId")
            .Cascade.SaveUpdate();

    }

Я не уверен, что мой каскад правильный, но я все их перепробовал!

Я пытался получить все атрибуты и сделать

var AttRepository = GetRepository<ForSale.Domain.Attribute>();
foreach (var a in dbProduct.Attribute)
            {
                AttRepository.Delete(a);
            }

удаляя каждого по отдельности, также попытался сделать:

dbProduct.Attributes.Clear();

Опять не получится! Я получаю ошибку

"Невозможно вставить значение NULL в столбец 'ProductId', таблица '{LocalFilePath} /PRODUCTS.MDF.dbo.Attribute'; столбец не допускает нулевые значения. UPDATE не удается. Заявление было прекращено. "

dbProduct

1 Ответ

2 голосов
/ 12 октября 2010

Вы должны отобразить Product.Attribute как Inverse.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...