우리는 쉽게 플랫 파일 클래스를 직렬화 할 수 있지만 데이터베이스에 클래스를 직렬화하려면 다음 어떻게 그것을 할 수있는 경우 가능한 어떻게 DB에서 데이터를 deserialize 할 수 있습니다. 수업에. C#에서 샘플 코드를 제공하십시오. 열을 BLOB 바이너리 직렬화를 사용하여, 또는 XML \ 데이터 접촉 \ XML 컬럼 순 데이터의 접촉을 사용하여어떻게 파일 시스템 대신 데이터베이스에 클래스를 직렬화하는 C#
감사
우리는 쉽게 플랫 파일 클래스를 직렬화 할 수 있지만 데이터베이스에 클래스를 직렬화하려면 다음 어떻게 그것을 할 수있는 경우 가능한 어떻게 DB에서 데이터를 deserialize 할 수 있습니다. 수업에. C#에서 샘플 코드를 제공하십시오. 열을 BLOB 바이너리 직렬화를 사용하여, 또는 XML \ 데이터 접촉 \ XML 컬럼 순 데이터의 접촉을 사용하여어떻게 파일 시스템 대신 데이터베이스에 클래스를 직렬화하는 C#
감사
다른 말처럼 이미 메모리 스트림에서 Byte [] 배열을 가져온 다음 이진 배열을 사용하여 Blob/image 형식의 데이터베이스에 바이트 배열을 저장할 수 있습니다.
다시 읽는 동안 그런 다음 그냥 직렬화
직렬화라는 기술을 사용하여 스트림의 열의 값을 읽어
BinaryFormatter bf = new BinaryFormatter();
List<SearchFilterDetails> _list = QueryFilterDetails.ToList<SearchFilterDetails>();
using (MemoryStream ms = new MemoryStream())
{
bf.Serialize(ms, _list);
return ms.GetBuffer();
}
역 직렬화
private void DeSerilizeQueryFilters(byte[] items)
{
BinaryFormatter bf = new BinaryFormatter();
List<SearchFilterDetails> _list = new List<SearchFilterDetails>();
try
{
using (MemoryStream ms = new MemoryStream())
{
ms.Write(items, 0, items.Length);
ms.Position = 0;
_list = bf.Deserialize(ms) as List<SearchFilterDetails>;
}
foreach (SearchFilterDetails mobj in _list)
{
QueryFilterDetails.Add(mobj);
}
}
catch (Exception ex)
{
}
}
.
편집 : 이진 예제는 @Saurabh에서 이미 제공됩니다. 데이터 계약 예은 Peter Ritchie's blog으로 제공됩니다.
개체를 serialize 할 때 종종 스트림에 대해 수행됩니다. 메모리 스트림에 직렬화 한 다음 바이트를 다시 읽어 데이터베이스에 넣을 수 있습니다.
현재 어떤 직렬화 코드가 있습니까? 전체 코드를 제공하는 것보다 수정하는 방법을 알려주는 것이 좋습니다.
클래스 (기본 제공)를 이진 형식 또는 XML로 serialize 할 수 있습니다.
첫 번째 경우는 byte[]
이고 두 번째 경우는 string
이됩니다.
데이터베이스에 유지해야하는 경우 데이터베이스로 보내야하는 다른 바이트 배열 또는 문자열 (데이터베이스가 네이티브로 지원하는 경우 XML)로 처리하십시오.
Thomas, 애플리케이션에서 어떤 종류의 데이터 액세스 논리를 사용하고 있습니까?
데이터베이스와 상호 작용하고 개체를 저장/검색하는 방법을 찾고 있다면 Entity Framework 또는 NHibernate를 살펴볼 수도 있습니다. 이러한 ORM을 사용하면 응용 프로그램에서 실제로 중요한 항목에 집중할 수 있습니다. 객체/엔티티가로드되거나 저장되는 방식이 아닙니다.
개체를 XML로 serialize합니다. XML Blob에서 데이터 세트를 읽으십시오. 데이터 집합의 각 테이블/행에 대해 DB create 문을 만듭니다.
당신에게 모든 스트림에 serialize/de-serialize 할 수 있습니다. 본질적으로 얻을 수있는 것은 무리입니다. f 바이트 - 파일이나 데이터베이스에 저장할 수 있습니다 (SQL Server의 varbinary 열, oracle의 blob). – VinayC
괜찮은 데이터베이스 레이아웃을 만들고이를 C# 코드로 변환하는 것이 좋습니다. 알맞은 OR 매퍼를 사용하거나 유형 데이터 세트/linq2sql을 작성하십시오. – CodingBarfield