K K Shah Ответов: 1

Как получить размер сущности, извлеченной с помощью репозитория ?


Я хочу получить размер класса сущностей, который извлекается из базы данных с помощью репозитория.
Как это сделать с помощью Vb.net -что ?

Ниже строка вызывает метод GetEntity, который находится в моем InwardService.

Dim Inward As ARI.PurchaseTranEntity.InwardOutward = _InwardService.GetEntity(id)

Итак, то, что я хочу получить, имеет размер Внутрь ?

Мой сервисный код для функции GetEntity выглядит следующим образом -
Public Overrides Function GetEntity(code As Integer) As ARI.PurchaseTranEntity.InwardOutward
Try
Dim Data = Repository.Query(
                 Function(c) c.Code = code).
                       Include(Function(c) c.InwardOutwardDetails).
                       Include(Function(c) c.AdditionalChargesDetails).
                           Include(Function(c) c.AdditionalChargesDetails.Select(Function(k) k.AdditionalChargesAccount)).
                       Include(Function(c) c.NoteDetails).
                       Include(Function(c) c.AttributeValues).
                       Include(Function(c) c.BusinessPartner).
                       Include(Function(c) c.Currency).
                       Include(Function(c) c.Buyer).
                       Include(Function(c) c.BillToAddress).
                       Include(Function(c) c.ShipToAddress).
                       Include(Function(c) c.Shipper).
                       Include(Function(c) c.PriceList).
                       Include(Function(c) c.InwardOutwardDetails.Select(Function(x) x.ProductTaggingDetails)).
                       Include(Function(c) c.InwardOutwardDetails.Select(Function(x) x.ProductTaggingDetails.Select(Function(y) y.Product))).
                       Include(Function(c) c.InwardOutwardDetails.Select(Function(x) x.UOM)).
                       Include(Function(c) c.InwardOutwardDetails.Select(Function(x) x.Item).Select(Function(d) d.ItemBarCodeLinks)).
                       Include(Function(c) c.InwardOutwardDetails.Select(Function(x) x.Item)).
                       Include(Function(c) c.InwardOutwardDetails.Select(Function(x) x.StockPoint)).
                       Include(Function(c) c.InwardOutwardDetails.Select(Function(x) x.Tax)).
                       Include(Function(c) c.InwardOutwardDetails.Select(Function(x) x.Buyer)).
                       Include(Function(c) c.InwardOutwardDetails.Select(Function(x) x.InwardOutwardAllocationDetails)).
                       Include(Function(c) c.InwardOutwardDetails.Select(Function(x) x.RequisitionFulfillmentDetails)).
                       Select(Function(c) c).SingleOrDefault()
Catch ex As Exception
           Throw ex
       End Try
   End Function


Что я уже пробовал:

До сих пор , исследуя это, я узнал, что могу достичь этого с помощью SQL-запроса -
SELECT *
INTO dbo.MyTempTable
FROM stmItem
exec sp_spaceused 'Table'
DROP TABLE Table

Выше запрос возвращает требуемый результат -
name	         rows	reserved	data	index_size	unused
Table	         8978     1296 KB	1264 KB	  8 KB	     24 KB

Но я хочу 1264 КБ, используя шаблон репозитория. Любая помощь будет оценена по достоинству ?

Richard Deeming

Catch ex As Exception
    Throw ex


Не делай этого! Вы только что уничтожили трек стека любого выброшенного исключения, что значительно затрудняет поиск реальной причины.

Если вы должны повторно создать исключение, просто используйте Throw вместо Throw ex.
Оператор Throw (Visual Basic) | Microsoft Docs[^]

Но в этом случае, поскольку вы ничего не делаете с исключением, вы можете просто удалить Try..Catch блок полностью.

1 Ответов

Рейтинг:
0

Gerry Schmitz

1) Создайте хранимую процедуру вашего "SQL-запроса"
2) Добавьте в свой "репозиторий" метод, который вызывает указанную процедуру с параметром "имя таблицы" и возвращает результат в виде строкового скаляра.