2012-04-23 1 views
0

ADO.Net 엔티티의 직렬화와 관련하여 이미 많은 질문이 게시되어 있지만 실제로하고 싶은 일을 실제로 찾지 못했습니다.ADO.NET 엔티티의 일련 번호가 좁은 직렬화

기본적으로 ADO.Net 엔터티의 단순한 JSON 또는 일반 개체 표현이 필요합니다. 목적은 변경 로깅입니다. 즉 레코드가 변경 될 때 "이전"및 "이후"데이터 사본을 걸러 내서 변경 사항을 기록하려고합니다.

내비게이션, 복합성 또는 기타 속성을 고려하고 싶지 않습니다. 엔티티의 스칼라 속성. 특수한 경우에만 나타나는 일부 데이터가 누락되면 괜찮습니다. 거친 로그를 작성하려고합니다.

Employee emp = db.Employees.First(); 

string oldRecordJSON = MySerializer.serialize(emp); 

emp.Name = "Fred"; 
db.saveChanges(); 

string newRecordJSON = MySerializer.serialize(emp); 

ChangeLog.logDBChange("Employees", emp.ID, oldRecordJSON, newRecordJSON, DateTime.Now); 

... 어떤 빠른 & 쉬운 방법 MySerializer.serialize을 구현하기 : 이상적으로 내 최종 코드는 다음과 같이해야합니까?

감사합니다.

답변

1

직원의 특정 속성을 원할 경우 기본 모델을 만들고이를 직렬화하는 것이 좋습니다.

var serializer = new JavaScriptSerializer(); 
serializer.Serialize(new MyEmployeeModel{ // set fields here}); 

원하는대로 변환기로 만들 수 있습니다. 그렇게 할 수 있습니다.

코드를 입력하기 위해 (또는 원하는대로) 변환기를 만들 수있는 인터페이스 인 IConverter<TInputType, TOutputType>이 있습니다.

public interface IEmployeeFromDatabaseToBasicEmployeeModelConverter 
    : IConverter<TheDBType, MyEmployeeModel>{} 

public class EmployeeFromDatabaseToBasicEmployeeModelConverter : 
           IEmployeeFromDatabaseToBasicEmployeeModelConverter 
{ 
    public MyEmployeeModel Invoke(TheDBType myDbTypeObject) 
    { 
    return new MyEmployeeModel{ 
     // set properties. 
    } 
    } 
} 
+0

정말 일반적으로 작동하는 것을 기대하고 있습니다. 이 프로젝트의 압축 기간이 매우 짧고 빠르며 더러운 솔루션 (반드시 "최상의"솔루션 일 필요는 없음)이 필요합니다. – DanM

+0

변환기가 빠르지 않고 더러울 수는 없지만 첫 번째 부분은입니다. 데이터를 보관할 클래스를 만들고, 객체를 만들고, 데이터로 채우고, 직렬화하십시오. 30 초의 직업입니다. –

+0

데이터베이스에서 돌아 오는 개체를 직렬화하면됩니다. 내가 본 Employee 객체가 이미있다. 그냥 내 대답에 설명 된 serializer에 전달하십시오. –

관련 문제