删除Nhibernate的问题

时间:2010-10-11 22:06:36

标签: asp.net-mvc nhibernate

我有两个课程。 “Product”和Product可以有许多“Attribute”类对象

当有人编辑“产品”时,我想删除与该产品相关的所有属性并重新创建新的属性(第二部分工作正常)但我收到一个错误,导致我删除属性。

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失败。 声明已经终止。“

数据库产品

1 个答案:

答案 0 :(得分:2)

您应将Product.Attribute映射为Inverse