2008-09-02 5 views
1

vb.net 사용자 정의 개체를 SQL 데이터베이스에 저장하는 방법은 어떻게됩니까? 열을 사용하여 속성을 복제하려고하지 않습니다. 내 객체를 바이트 배열로 변환하거나 인코딩 한 다음 db의 필드에 저장하는 것을 의미합니다. 세션에 객체의 인스턴스를 저장할 때처럼, 현재 세션을 지나서 정보를 유지해야합니다.vb.net 개체가 데이터베이스에 저장되었습니다.


@Orion 에드워즈는

이 자세의 문제가 아니다. 언젠가는 코드를 바꿀 것이기 때문입니다. 그런 다음 이전 객체를 직렬화 해제하고 프로그램이 중단됩니다.

내 프로그램이 "크래시"하지 않으면 예외가 발생합니다. 운 좋게도 .net에는 그런 기회를 위해 헌신 된 모든 수업이 있습니다. 어느 시점에서 부실 데이터를 새로 고치고 DB에 다시 넣을 것입니다. 그것이이 한 분야 (또는 입장이 될 수있는 자세)의 요점입니다.

답변

5

serialization을 사용할 수 있습니다. 이진 객체 (BLOB에 적합), XML (MSSQL의 XML 데이터 유형 활용) 또는 일반 텍스트 (varchar 또는 텍스트 열에 저장)의 형식으로 객체를 저장할 수 있습니다.)

2

BinaryFormatter 클래스를 사용하여 개체를 이진 형식으로 직렬화 한 다음 결과 문자열을 데이터베이스에 저장할 수 있습니다.

1

XmlSerializer 또는 .net 3.x의 DataContractSerializer가 대신 작업을 수행합니다.

3

당신이 당신의 자신의 궁극적 인 정신을 향한이 도로 아래로 머리를하기 전에, 당신이 살펴 보셔야합니다 (또는 일일 그것을 반복) : 데이터베이스에 오브젝트를 지속하기

http://thedailywtf.com/Articles/The-Mythical-Business-Layer.aspx

좋은 생각이 아니다 . 그것은 데이터베이스가하도록 설계된 모든 좋은 것들을 죽입니다.

0

@aku, lomaxx 및 bdukes - 귀하의 솔루션은 내가 찾고있는 솔루션입니다.

@ 1800 정보 -이 문제에 대한 귀하의 입장을 고맙게 생각하지만, 이것은 한 달에 한 번만 새로 고침을받는 웹 서비스에서 얻은 특별한 데이터 사례입니다. dbserver 형식으로 유지되는 데이터가 필요하지 않습니다. 왜냐하면 웹 서비스가 필요하기 때문입니다. 아래 코드는 마침내 작동합니다.

직렬화

#'res is my object to serialize 
    Dim xml_serializer As System.Xml.Serialization.XmlSerializer 
    Dim string_writer As New System.IO.StringWriter() 
    xml_serializer = New System.Xml.Serialization.XmlSerializer(res.GetType) 
    xml_serializer.Serialize(string_writer, res) 

역 직렬화가 당신이 원하는 무엇

#'string_writer and xml_serializer from above 
    Dim serialization As String = string_writer.ToString 
    Dim string_reader As System.IO.StringReader 
    string_reader = New System.IO.StringReader(serialization) 
    Dim res2 As testsedie.EligibilityResponse 
    res2 = xml_serializer.Deserialize(string_reader) 
0

는 "직렬화"개체라고하고, 닷넷 그것에 대해 갈 수있는 몇 가지 방법을 가지고 있습니다. 하나는 System.Xml.Serialization 네임 스페이스의 XmlSerializer 클래스입니다.

다른 하나는 System.Runtime.Serialization 네임 스페이스에 있습니다. 이것은 SOAP 형식화 프로그램, 2 진 형식화 프로그램 및 공통 인터페이스를 구현하는 모든 것을 상속받을 수있는 기본 클래스를 지원합니다.

당신이 말하는 것에 대해, 이전에 제안 된 BinaryFormatter가 아마도 최고의 성능을 보일 것입니다.

0

나는 1800 정보를 후원하고 있습니다. 내가 그 문제에 입장을 감사하면서 장기 저장을위한
객체 일렬 좋은 생각

결코, 이것은 내가 한 달에 한 번 만 새로 가져옵니다 웹 서비스에서 얻을 데이터의 특별한 경우이다 .

이것은 입장의 문제가 아닙니다. 언젠가는 코드를 바꿀 것이기 때문입니다. 그런 다음 이전 객체를 직렬화 해제하고 프로그램이 중단됩니다.

0

충돌이 발생하거나 예외가 발생하는 경우 오브젝트를 재생성하기 위해 이진 데이터가 필요합니다.

바이너리 만 지속한다면 디스크에 바로 저장하지 않는 것이 좋습니다. 앞서 언급했듯이 xml과 같은 것을 사용하여 보길 원할 수도 있습니다. 객체 정의를 변경하면 열심히 노력하지 않고는 직렬화 할 수 없을 수도 있습니다.