public void ValidateRowDeletion(DevExpress.Mvvm.Xpf.ValidateRowDeletionArgs args)
 {
     using (var unitOfWork = new DevExpress.Xpo.UnitOfWork()) {
         var key  = DetachedObjectsHelper.GetKey(args.Items.Single());
         var item = unitOfWork.GetObjectByKey <XPOIssues.Issues.Issue>(key);
         unitOfWork.Delete(item);
         unitOfWork.CommitChanges();
     }
 }
 public void FetchRows(DevExpress.Mvvm.Xpf.FetchRowsAsyncArgs args)
 {
     args.Result = Task.Run <DevExpress.Xpf.Data.FetchRowsResult>(() =>
     {
         using (var session = new DevExpress.Xpo.Session()) {
             var queryable = session.Query <XPOIssues.Issues.Issue>().SortBy(args.SortOrder, defaultUniqueSortPropertyName: nameof(XPOIssues.Issues.Issue.Oid)).Where(MakeFilterExpression((DevExpress.Data.Filtering.CriteriaOperator)args.Filter));
             var items     = queryable.Skip(args.Skip).Take(args.Take ?? 100).ToArray();
             return(DetachedObjectsHelper.ConvertToDetachedObjects(items));
         }
     });
 }
 public void ValidateRow(DevExpress.Mvvm.Xpf.RowValidationArgs args)
 {
     using (var unitOfWork = new DevExpress.Xpo.UnitOfWork()) {
         var item = args.IsNewItem
             ? new XPOIssues.Issues.Issue(unitOfWork)
             : unitOfWork.GetObjectByKey <XPOIssues.Issues.Issue>(DetachedObjectsHelper.GetKey(args.Item));
         DetachedObjectsHelper.ApplyProperties(item, args.Item);
         unitOfWork.CommitChanges();
         if (args.IsNewItem)
         {
             DetachedObjectsHelper.SetKey(args.Item, item.Oid);
         }
     }
 }
        public MainWindow()
        {
            InitializeComponent();
            using (var session = new Session()) {
                var classInfo  = session.GetClassInfo <XPOIssues.Issues.Issue>();
                var properties = classInfo.Members
                                 .Where(member => member.IsPublic && member.IsPersistent)
                                 .Select(member => member.Name)
                                 .ToArray();
                _DetachedObjectsHelper = DetachedObjectsHelper <XPOIssues.Issues.Issue> .Create(classInfo.KeyProperty.Name, properties);
            }
            var source = new InfiniteAsyncSource
            {
                CustomProperties = _DetachedObjectsHelper.Properties,
                KeyProperty      = nameof(XPOIssues.Issues.Issue.Oid)
            };

            source.FetchRows         += OnFetchRows;
            source.GetTotalSummaries += OnGetTotalSummaries;
            grid.ItemsSource          = source;
            LoadLookupData();
        }