Exemplo n.º 1
0
        private static ItemType GetOrAdd(string caption, string uniqueKey, bool registerIfNoFound)
        {
            return(ItemTypes.GetOrAdd(uniqueKey, k =>
            {
                using (var db = new Db.DataContext())
                    using (var scope = db.CreateScope(TransactionScopeOption.Suppress))
                    {
                        var r = db.ItemType.Where(x => x.UniqueKey == uniqueKey).FirstOrDefault();
                        if (r == null && registerIfNoFound)
                        {
                            var r_ = new ItemType()
                            {
                                NameItemType = caption, UniqueKey = uniqueKey
                            };
                            db.ItemType.Add(r_);
                            db.SaveChanges();
                            r = r_;
                        }
                        if (r != null && r.NameItemType != caption)
                        {
                            r.NameItemType = caption;
                            db.SaveChanges();
                        }
                        ItemTypes[uniqueKey] = r;
                        return r;
                    }
            }));

            //var r = ItemTypes.Where(x => x.Value.UniqueKey == uniqueKey).Select(x => x.Value).FirstOrDefault();
            //if (r == null)
            //{
            //    using (var db = new Db.DataContext())
            //    using (var scope = db.CreateScope(TransactionScopeOption.Suppress))
            //    {
            //        r = db.ItemType.Where(x => x.UniqueKey == uniqueKey).FirstOrDefault();
            //        if (r == null && registerIfNoFound)
            //        {
            //            var r_ = new ItemType() { NameItemType = caption, UniqueKey = uniqueKey };
            //            db.ItemType.Add(r_);
            //            db.SaveChanges();
            //            r = r_;
            //        }
            //        if (r != null && r.NameItemType != caption)
            //        {
            //            r.NameItemType = caption;
            //            db.SaveChanges();
            //        }
            //        ItemTypes[uniqueKey] = r;
            //    }
            //}

            //return r;
        }
Exemplo n.º 2
0
        /// <summary>
        /// Возвращает тип объектов для идентификатора <paramref name="type"/>.
        /// </summary>
        /// <param name="type">Идентификатор, для которого следует получить тип объектов.</param>
        public static ItemType GetItemType(int type)
        {
            if (type <= 0)
            {
                return(NotFound);
            }

            var _r = ItemTypes.Where(x => x.Value.IdItemType == type).Select(x => x.Value).FirstOrDefault();

            if (_r == null)
            {
                using (var db = new Db.DataContext())
                    using (var scope = db.CreateScope(TransactionScopeOption.Suppress))
                        _r = db.ItemType.Where(x => x.IdItemType == type).FirstOrDefault();
            }

            if (_r != null)
            {
                return(_r);
            }

            return(NotFound);
        }