在一个查询中保存父级和子级(子级对父级有空值引用)

Posted

技术标签:

【中文标题】在一个查询中保存父级和子级(子级对父级有空值引用)【英文标题】:Save parent with children in one query ( children have null value reference for parent) 【发布时间】:2017-02-18 21:23:38 【问题描述】:

美好的一天。我无法在同一个查询中保存有孩子的父母。但是孩子们对父母的参考是空的...... 我的数据库中的父级是表“food_in_the_cart”,它的模型在这里:

    public class FoodInTheCartModel
    
        public virtual int ID  get; set; 
        public virtual ClientModel Client  get; set; 
        public virtual EstablishmentModel Stocked  get; set; 
        public virtual ProductModel DesirableProduct  get; set; 
        public virtual IList<CartAdditiveModel> Additives  get; set;  //children
        public virtual void AddAdditivesToTheCart(CartAdditiveModel a)
        
            a.Cart = this;
            Additives.Add(a);
        
        public FoodInTheCartModel()
        
            this.Additives = new List<CartAdditiveModel>();
        
    

也映射:

public FoodInTheCartMap()

    Table("food_in_the_cart");

    Id(x => x.ID)
        .Column("id")
        .GeneratedBy.Native("food_in_the_cart_id_seq");

    References(x => x.Client)
        .Column("fk_id_client")
        .Not.Nullable()
        .Not.LazyLoad();

    References(x => x.DesirableProduct)
        .Column("fk_id_product")
        .Not.Nullable()
        .Not.LazyLoad();

    References(x => x.Stocked)
        .Column("fk_id_stock")


 .Not.Nullable()
            .Not.LazyLoad();

        HasMany(x => x.Additives)
            .Table("cart_additive")
            .Cascade.SaveUpdate()
            .Cascade.All()
            .Inverse()              
            .Not.LazyLoad();
    

而孩子是cart_additivecart_additive 的模型是 CartAdditive 的类型,并且对 food_in_the_cart 的模型有参考,同样映射这个参考是:

        References(x => x.Cart)
            .Column("fk_id_cart")                                      
            .Not.LazyLoad();

这两个表的类型关系是一对多的:food_in_the_cart有很多cart_additive。似乎我尝试了一切来为有孩子的父母保存查询......但是孩子的父母仍然有空值。如何使子级中的父级引用不为空?

【问题讨论】:

【参考方案1】:

我从 FoodInTheCartMap 中的很多中删除了 Insert() 并在那里添加了 AsBug(),还允许 cart_additives 中的 strong>food_in_the_cart 作为参考,在此表的模型中称为 Cart。一切都以这种方式工作。耶。

【讨论】:

以上是关于在一个查询中保存父级和子级(子级对父级有空值引用)的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 中为父级和子级创建活动类

使用 MVC 5 向 Kendo UI 控制器添加父级和子级

nHibernate 保存一对多

删除父级和所有子级

悬停在子级上而对父级没有悬停效果[重复]

php facetwp索引仅限父级和一级子级条款