Beispiel #1
0
        public void BulkInsert <T, TOut>(List <BaseEntityObject> values, int?batchSize = null) where T : BaseEntityObject, new() where TOut : BaseEntity, new()
        {
            if (_casEnvironment.IdentityUser.UserType == UsetType.ReadOnly)
            {
                return;
            }

            if (!typeof(TOut).IsSubclassOf(typeof(BaseEntity)))
            {
                throw new ArgumentException("T", "не является наследником " + typeof(BaseEntity).Name);
            }

            if (!typeof(T).IsSubclassOf(typeof(BaseEntityObject)))
            {
                throw new ArgumentException("TOut", "не является наследником " + typeof(BaseEntityObject).Name);
            }

            var method = GetMethod(typeof(T), "Convert");

            var res = new List <TOut>();

            foreach (var value in values)
            {
                var obj = InvokeConverter <T, TOut>((T)value, method);
                obj.Guid = value.Guid = Guid.NewGuid().ToString();
                res.Add(obj);
            }

            var dict = _apiProvider.BulkInsert(res, batchSize);

            foreach (var value in values)
            {
                value.ItemId = dict[value.Guid];
            }
        }