Все, что вы можете сделать в EF, - это получить доступ / прочитать столбец XML в виде строки - с этого момента вы сами по себе.Не существует «встроенного» механизма для преобразования этого XML в сериализованный объект или что-то в этом роде.
Что касается вычисляемых столбцов:
вы можете определить простое выражениев вашем SQL
ALTER TABLE dbo.YourTable
ADD PriceWithTax AS PriceWithoutTax * (1 + TaxRate)
Это даст вам новый столбец PriceWithTax
на основе вашего столбца PriceWithoutTax
и другой столбец с именем TaxRate
(0,15 для 15% налога)
или вы можете создать хранимую функцию, которая возвращает единственное значение, и вызвать ее
ALTER TABLE dbo.YourTable
ADD PriceWithTax as dbo.AddTaxToPrice(PriceWithoutTax, TaxRate)
Мы также используем этот метод хранимой скалярной функции для анализа в XML, хранящемся в столбце XML.и извлеките определенные биты и кусочки в вычисляемый столбец.
Если ваши вычисления считаются «детерминированными» SQL Server, вы также можете добавить ключевое слово PERSISTED
в определение столбца.В этом случае ваши значения вычисляются один раз и фактически сохраняются / сохраняются в этой таблице, как и любой другой столбец.Теперь вы можете даже индексировать эти столбцы!Это прекрасно работает, например, со скалярными функциями, которые захватывают биты из XML и выставляют его в «родительской» таблице.