#c# #nhibernate #fluent-nhibernate #mapping
#c# #nhibernate #свободно-nhibernate #сопоставление
Вопрос:
Добрый день. Я не могу сохранить родительский элемент с дочерними элементами в одном запросе. Но дочерние элементы имеют нулевую ссылку для родительского элемента… Родительским элементом в моей БД является таблица «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_additive . Модель cart_additive является типом CartAdditive и имеет ссылку на модель food_in_the_cart, также сопоставляя эту ссылку:
References(x => x.Cart)
.Column("fk_id_cart")
.Not.LazyLoad();
Тип отношения между этими двумя таблицами — один ко многим: food_in_the_cart имеет много cart_additive . Кажется, я перепробовал все для сохранения запроса для родительского элемента с дочерними элементами… Но дочерние элементы по-прежнему имеют нулевое значение для родительского элемента. Как сделать родительскую ссылку в дочернем элементе не нулевой?
Ответ №1:
Я удалил Insert() из has many в FoodInTheCartMap и добавил туда AsBug(), также допустил нулевые значения для fk food_in_the_cart в cart_additives как для ссылки, называемой Cart в модели для этой таблицы. Все работает таким образом. Ура.