2012-04-23 2 views
0

Я понимаю, что есть много вопросов, уже отправленных относительно сериализации сущностей ADO.Net, но мне не повезло найти тот, который действительно действительно касается того, что я хочу делать.Bare-bones мелкая сериализация объекта ado.net

В принципе, мне нужно действительно голые кости, мелкие JSON или простое представление объекта ADO.Net. Цель заключается в регистрации изменений; то есть, когда запись будет изменена, я хочу зацепить копию своих данных «до» и «после» и зарегистрировать изменение.

Я не хочу рассматривать какие-либо навигационные, сложные или другие свойства; просто скалярные свойства объекта. Если я пропущу некоторые данные, которые появятся только в особых случаях, это нормально - просто пытаюсь сделать грубый журнал. В идеале мой окончательный код должен выглядеть примерно так:

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

Действительно надеясь на что-то, что работает полностью в целом; am на чрезвычайно сжатые временные рамки для этого проекта и просто нужно быстрое и грязное решение (не обязательно «лучшее» решение). – DanM

+0

Конвертер может быть не быстрым и грязным, но первая часть. Создайте класс для хранения данных, создания объекта, заполнения его вашими данными и его сериализации. Это 30-секундная работа. –

+0

Альтернативно просто сериализуйте объект, который возвращается из вашей базы данных. Я уже вижу объект Employee. Просто передайте это в сериализатор, который я изложил в своем ответе. –

Смежные вопросы