Вход/Регистрация
C# для профессионалов. Том II
вернуться

Ватсон Карли

Шрифт:

</products>

<products diffgr:id="products2" msdata:rowOrder="1">

<ProductID>2</ProductID>

<ProduсtName>Chang</ProductName>

<SupplierID>1</SupplierID>

<CategoryID>1</CategoryID>

<QuantityPerUnit>24 - 12 oz bottles</QuantityPerUnit>

<UnitPrice>19</UnitPrice>

<UnitsInStock>17</UnitsInStock>

<UnitsOnOrder>40</UnitsOnOrder>

<ReorderLevel>25</ReorderLevel>

<Discontinued>false</Discontinued>

</products>

…

<products diffgr:id="products78" msdata:rowOrder="77" diffgr:hasChanges="inserted">

<ProductID>100</ProductID>

<ProductName>This is a new product</ProductName>

<SupplierID>12</SupplierID>

<CategoryID>2</CategoryID>

<QuantityPerUnit>12</QuantityPerUnit>

<UnitPrice>23</UnitPrice>

<UnitsInStock>5</UnitsInStock>

<UnitsOnOrder>0</UnitsOnOrder>

<ReorderLevel>1</ReorderLevel>

<Discontinued>false</Discontinued>

</products>

</XMLProducts>

<diffgr:before>

<products diffgr:id="products1" msdata:rowOrder="0">

<ProductID>1</ProductID>

<ProductName>Chai </ProductName>

<SupplierID>1</SupplierID>

<CategoryID>1</CategoryID>

<QuantityPerUnit>10 boxes x 20 bugs </QuantityPerUnit>

<UnitPrice>18</UnitPrice>

<UnitsInStock>39</UnitsInStock>

<UnitsOnOrder>0</UnitsOnOrder>

<ReorderLevel>10</ReorderLevel>

<Discontinued>false</Discontinued>

</products>

</diffgr:before>

</diffgr:diffgram>

Заметим, каким образом повторяется каждая строка

DataTable
, и что существует атрибут
diffgr:id
для каждого элемента
<products>
.
diffgr
является префиксом пространства имен для
urn:schemas-microsoft-com:xml-diffgram-v1
. Для модифицированной строки и для вставленной строки ADO.NET добавляет атрибут
diffgr:hasChanges
. Здесь есть также элемент
<diffgr:before>
после элемента
<XMLProducts>
, который содержит элемент
<products>
, указывающий на предыдущее содержание всех модифицированных строк. Для добавленной строки не существует
"before"
, поэтому здесь отсутствует элемент
<diffgr:before>
, однако он присутствует для модифицированной строки.

После того как

DiffGram
считан в
DataTable
, он оказывается в состоянии, в котором он был бы после выполнения изменений в данных перед вызовом
AcceptChanges
. В этом месте можно на самом деле откатить изменения, вызывая метод
RejectChanges
. Проверяя свойство
DataRow.Item
и передавая либо
DataRowVersion.Original
, либо
DataRowVersion.Current
, можно увидеть значения в
DataTable
перед и после изменений.

Сериализация объектов в XML

Сериализация является процессом сохранения объекта на диске. Другая часть приложения или даже другое приложение могут десериализовать объект и он будет в том же состоянии, в каком он был до сериализации. Платформа .NET содержит два способа выполнения сериализации. Рассмотрим пространство имен

System.Xml.Serialization
.

Как показывает имя, сериализация производится в формате XML. Это делается преобразованием открытых свойств объекта и открытых полей в элементы и/или атрибуты. Сериализатор XML не может преобразовать скрытые данные, а только открытые. Представляйте это как способ сохранения состояния объекта. Если необходимо сохранить скрытые данные, то используйте

BinaryFormatter
в пространстве имен
System.Runtime.Serialization.Formatters.Binary
. Можно также:

  • Читать дальше
  • 1
  • ...
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: