Я получаю содержимое каждого файла в виде строки и хочу записать его в таблицу SQL Server с использованием Entity Framework.
Таблица состоит из трех столбцов: первый — это автоматически увеличиваемый идентификатор, второй – GUID и третий — содержимое XML< /code>.
Столбец для содержимого XML-файл имеет тип XML.
Когда я пытаюсь записать в эту таблицу строку с содержимым XML-файла, я получаю следующее исключение:< /p>
Разбор XML: строка 1, символ 38, невозможно переключить кодировку
XML-файл имеет кодировку UTF-8, но я думаю, мне нужно UTF-16.
Как правильно закодировать содержимое файла?
Любая помощь приветствуется.
Это типичный заголовок XML-файла:
Код: Выделить всё
Код: Выделить всё
USE [myDatabase]
GO
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [stor].[myTable](
[myTableId] [bigint] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[FileGuid] [varchar](36) NOT NULL,
[XmlDocument] [xml] NOT NULL,
CONSTRAINT [PK_myTable] PRIMARY KEY CLUSTERED
(
[myTableId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
Код: Выделить всё
public void WriteXmlTestFileToDatabase(string xmlFileContent)
{
using (SqlServerDatabaseEntities db = new SqlServerDatabaseEntities())
{
var newEntry = new myTable();
newEntry.FileGuid = Guid.NewGuid().ToString();
newEntry.XmlDocument = xmlFileContent;
db.myTable.Add(newEntry);
db.Entry(newEntry).State = EntityState.Added;
db.SaveChanges(); // Here I'm getting the exception
}
}
Я удалил первый узел с кодировкой и использовал SqlCommand для записи в базу данных.
Итак, наконец-то он работает.
Спасибо всем за помощь и вклад.
Вот почему мне нравится этот форум.
Большое спасибо!
Подробнее здесь: https://stackoverflow.com/questions/793 ... -to-utf-16
Мобильная версия