Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Nhibernate的所有删除孤立项_C#_Asp.net_Nhibernate - Fatal编程技术网

C# Nhibernate的所有删除孤立项

C# Nhibernate的所有删除孤立项,c#,asp.net,nhibernate,C#,Asp.net,Nhibernate,因此,我有一个名为order的父对象和一个名为orderLineItems的子对象集合,在nHibernate中Cascade设置为All Delete orphan。这是我的密码 using( var session = _sessionManager.GetSession()) using (var transaction = session.BeginTransaction()) { var order = _repository.

因此,我有一个名为order的父对象和一个名为orderLineItems的子对象集合,在nHibernate中Cascade设置为All Delete orphan。这是我的密码

using( var session = _sessionManager.GetSession())
        using (var transaction = session.BeginTransaction())
        {

            var order = _repository.GetOrderEagerlyByOrderId(session, fromDb.Id);
            var now = DateTime.Now;
            const string user = "GNB\\Username";
            var future = now.AddYears(1);
            var taxType = new TaxType(0, "Code", "AlternateNameE", "AlternateNameF", "NameE", "NameF", "DescriptionE", "DescriptionF", 13, now, future, user, now, user, now);
            var _serviceCatRep = new ServiceCatalogueRepository();

            var serviceCatalogueItem = _serviceCatRep.GetServiceCatalogueItemByCode(session, "VR-PASS");
            var orderLineItem1 = new OrderLineItem(0, null, "DescriptionE", "DescriptionF", 1, 10, null, null, 5, false, serviceCatalogueItem, null, user, now, user, future);

            order.OrderLineItems.Clear();

            order.OrderLineItems = order.OrderLineItems == null ? new List<IOrderLineItem> { orderLineItem1 } : new List<IOrderLineItem>(order.OrderLineItems) { orderLineItem1 };

            _repository.SaveOrUpdate(session, order);
            transaction.Commit();
        }
使用(var session=\u sessionManager.GetSession())
使用(var transaction=session.BeginTransaction())
{
var order=\u repository.getOrderyByOrderId(会话,fromDb.Id);
var now=DateTime.now;
const string user=“GNB\\Username”;
var future=now.AddYears(1);
var taxType=新的分类类型(0,“代码”、“替代名称”、“替代名称”、“名称”、“名称F”、“描述一”、“描述F”、13、现在、未来、用户、现在、用户、现在);
var_serviceCatRep=新服务目录存储();
var serviceCatalogeItem=_serviceCatRep.getserviceCatalogeItemByCode(会话,“VR-PASS”);
var orderLineItem1=新的OrderLineItem(0,null,“descriptionOne”,“DescriptionF”,1,10,null,null,5,false,serviceComcatalogeItem,null,user,now,user,future);
order.OrderLineItems.Clear();
order.OrderLineItems=order.OrderLineItems==null?新列表{orderLineItem1}:新列表(order.OrderLineItems){orderLineItem1};
_SaveOrUpdate(会话、顺序);
Commit();
}
它在
transaction.Commit()上失败中出现错误:

NHibernate.HibernateException:拥有实体实例不再引用cascade=“all delete orphan”的集合


另外,通过一个示例,all和all delete Orphant之间有什么区别。

在映射中-将集合标记为inverse()

你有:

order.OrderLineItems.Clear();

order.OrderLineItems = order.OrderLineItems == null 
    ? new List<IOrderLineItem> { orderLineItem1 } 
    : new List<IOrderLineItem>(order.OrderLineItems) { orderLineItem1 };

您是否尝试过
cascade=“all”
?这很有效,但我真的需要它完全正确。这对cascade all和inverse=true都有效。它也适用于级联所有和反向=假。它们都不适用于cascade all delete orphane,我假设您希望集合只包含orderLineItem1,因此要删除已经存在的任何其他内容?
order.OrderLineItems.Clear();

order.OrderLineItems = order.OrderLineItems == null 
    ? new List<IOrderLineItem> { orderLineItem1 } 
    : new List<IOrderLineItem>(order.OrderLineItems) { orderLineItem1 };
order.OrderLineItems.Add(orderLineItem1);