데이터베이스 값을 XML로 직렬화하고 Apps 디버그 폴더에 보관했습니다. 이제 그것을 deserialize하고 SQL 데이터베이스에 삽입하고 싶습니다.XML 문자열에서 LinqToEntities를 사용하는 Varbinary (MAX)
이XmlDocument XDoc = new XmlDocument();
XDoc.Load("Serialized.xml");
var xmlcontents = XDoc.InnerXml; //All XML Contents
DataSet ds = new DataSet();
StringReader sr = new StringReader(xmlcontents);
ds.ReadXml(sr);
DataTable offlineDT = ds.Tables[0];
var context = new SysventLinqClassDataContext();
context.Connection.Open();
//The transaction Part
using (context.Transaction = context.Connection.BeginTransaction())
{
using (var bulkCopy = new SqlBulkCopy(context.Connection.ConnectionString, SqlBulkCopyOptions.KeepIdentity))
{
bulkCopy.ColumnMappings.Add("DocTitle", "DocTitle");
bulkCopy.ColumnMappings.Add("DateOfReceipt", "DateOfReceipt");
bulkCopy.ColumnMappings.Add("Descriptions", "Descriptions");
bulkCopy.ColumnMappings.Add("HouseID", "HouseID");
bulkCopy.ColumnMappings.Add("DocData", "DocData".ToString());
bulkCopy.ColumnMappings.Add("SiteID", "SiteID");
bulkCopy.ColumnMappings.Add("EmployeeID", "EmployeeID");
bulkCopy.BulkCopyTimeout = 600;
bulkCopy.DestinationTableName = "tblDocument";
bulkCopy.WriteToServer(offlineDT);
}
}
클래스가 포함되어 있습니다 :
public string DocTitle { get; set; }
public string DateOfReceipt { get; set; }
public string Descriptions { get; set; }
[System.Xml.Serialization.XmlElementAttribute("DocData", DataType ="base64Binary")]
public byte[] DocData { get; set; } //This is a PDF document as varbinary(MAX) in mySQL Database
public int SiteID { get; set; }
public int HouseID { get; set; }
public int DesignID { get; set; }
public int EmployeeID { get; set; }
public void Save(string filename) //TO be called inside the main
{
using (var stream = new FileStream(filename, FileMode.Create))
{
var xmlData = new XmlSerializer(typeof(Class1));
xmlData.Serialize(stream, this);
}
}
하면 파일 저장을 클릭 onButton : 여기
내가 무슨 짓을 따라서FileStream fStream = File.OpenRead(filepath);
byte[] contents = new byte[fStream.Length];
fStream.Read(contents, 0, (int)fStream.Length);
fStream.Close();
Byte[] hexByte = new Byte[2]{Convert.ToByte(100),
Convert.ToByte(50)};
을; DocData = 내용;
이제 오류를 보여줍니다. 데이터 소스의 String 유형의 지정된 값을 지정된 대상 열의 varbinary 유형으로 변환 할 수 없습니다.
질문은 무엇을 가져 오는? 아니면 오류? 지금까지했던 코드를 보여줍니다 (훌륭합니다!). 그러나 나는 당신의 게시물에 질문이나 우리가 당신을 도와야 할 것으로 보이는 것을 보지 못합니다. –
@JonathanMagnan 오류입니다. '데이터 소스의 String 유형의 지정된 값을 지정된 대상 열의 varbinary 유형으로 변환 할 수 없습니다.' – DevRingim