Сериализация объектов в базу данных
От: Аноним  
Дата: 13.08.04 16:06
Оценка:
Люди, кто-нить таким занимался? Если да, то не могли бы парочку примерчиков кинуть или ссылочки де почитать от ентом можно.

Заранее благодарен.
Re: Сериализация объектов в базу данных
От: flashfm  
Дата: 13.08.04 22:09
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Люди, кто-нить таким занимался? Если да, то не могли бы парочку примерчиков кинуть или ссылочки де почитать от ентом можно.


А>Заранее благодарен.



Я делаю это так:

public Guid CreateNew(Object Obj)
{

    Stream stream = new MemoryStream();
    myFormatter = new BinaryFormatter();
    myFormatter.Serialize(stream, Obj);

    // Set the position to the beginning of the stream.
    stream.Seek(0, SeekOrigin.Begin);

    byte[] byteArray = new byte[stream.Length];
    stream.Read(byteArray, 0, (int)stream.Length);
    stream.Close();
    return (Guid) myDs.ExecuteScalar("ObjectStorage_CreateNew", "@Obj", byteArray);
        /* myDs - объект вспомогательного класса для работы с БД,
           можешь использовать здесь метод ExecuteScalar класса SqlCommand */
}


Хранимая процедура ObjectStorage_CreateNew:

CREATE PROCEDURE dbo.ObjectStorage_CreateNew
(@Obj image)
AS
DECLARE @Id uniqueidentifier;
SET @Id = NEWID();
INSERT INTO Storage(Id, Obj)
VALUES(@Id, @Obj)
SELECT @Id
we | never | gonna | stop
Re[2]: Сериализация объектов в базу данных
От: Аноним  
Дата: 14.08.04 09:22
Оценка:
Здравствуйте, flashfm, Вы писали:

F>Здравствуйте, Аноним, Вы писали:


А>>Люди, кто-нить таким занимался? Если да, то не могли бы парочку примерчиков кинуть или ссылочки де почитать от ентом можно.


А>>Заранее благодарен.



F>Я делаю это так:


F>
F>public Guid CreateNew(Object Obj)
F>{

F>    Stream stream = new MemoryStream();
F>    myFormatter = new BinaryFormatter();
F>    myFormatter.Serialize(stream, Obj);

F>    // Set the position to the beginning of the stream.
F>    stream.Seek(0, SeekOrigin.Begin);

F>    byte[] byteArray = new byte[stream.Length];
F>    stream.Read(byteArray, 0, (int)stream.Length);
F>    stream.Close();
F>    return (Guid) myDs.ExecuteScalar("ObjectStorage_CreateNew", "@Obj", byteArray);
F>        /* myDs - объект вспомогательного класса для работы с БД,
F>           можешь использовать здесь метод ExecuteScalar класса SqlCommand */
F>}
F>


F>Хранимая процедура ObjectStorage_CreateNew:


F>
F>CREATE PROCEDURE dbo.ObjectStorage_CreateNew
F>(@Obj image)
F>AS
F>DECLARE @Id uniqueidentifier;
F>SET @Id = NEWID();
F>INSERT INTO Storage(Id, Obj)
F>VALUES(@Id, @Obj)
F>SELECT @Id
F>


Единственная проблема как мне кажется, что в таком случае нельзя SQL запросы юзать, а очень бы хотелось
Мне скорее всего даже не как сами объекты, а их пропертя надо сохранять в таблички. Вот правда встает тогда вопрос, как быть со связями объектов ( как минимум агрегация и наследование, уже не говоря о более сложных )
Re[3]: Сериализация объектов в базу данных
От: Styk Россия  
Дата: 14.08.04 13:07
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Единственная проблема как мне кажется, что в таком случае нельзя SQL запросы юзать, а очень бы хотелось

А>Мне скорее всего даже не как сами объекты, а их пропертя надо сохранять в таблички. Вот правда встает тогда вопрос, как быть со связями объектов ( как минимум агрегация и наследование, уже не говоря о более сложных )


Что-то твоя задача на "сериализацию" не совсем похожа....
--------------------------
Re[4]: Сериализация объектов в базу данных
От: Аноним  
Дата: 14.08.04 13:57
Оценка:
Здравствуйте, Styk, Вы писали:

S>Здравствуйте, Аноним, Вы писали:


А>>Единственная проблема как мне кажется, что в таком случае нельзя SQL запросы юзать, а очень бы хотелось

А>>Мне скорее всего даже не как сами объекты, а их пропертя надо сохранять в таблички. Вот правда встает тогда вопрос, как быть со связями объектов ( как минимум агрегация и наследование, уже не говоря о более сложных )


S>Что-то твоя задача на "сериализацию" не совсем похожа....


Ну скажем так для примера... Есть например 2 таблички
Address
Address_ID
City
Add_Str

Person
Person_ID
Address_ID
Name


Есть 2 класса

    [DataTable("PERSON")]
    public class TPerson : DALSqlEngine
    {
        private object m_PersonID;
        private object m_AddressID;
        private string m_FirstName;
        private string m_LastName;
        private string m_MiddleName;
                // Skip  


        private TAddress m_Address;

        public TPerson(string strConnection) : base(strConnection)
        {
        }

        [KeyField("PERSON_ID")]
        public object ObjectID
        {
            get { return m_PersonID; }
            set { m_PersonID = value; }
        }

        [DataField("ADDRESS_ID")]
        public object AddressID
        {
            get { return TUtils.SetObjectValue(m_AddressID); }
            set { m_AddressID = value; }
        }

        [DataField("FIRST_NAME", Size=50)]
        public string FirstName
        {
            get { return TUtils.SetStringValue(m_FirstName); }
            set { m_FirstName = value; }
        }
        
        [DataField("LAST_NAME", Size=50)]
        public string LastName
        {
            get { return TUtils.SetStringValue(m_LastName); }
            set { m_LastName = value; }
        }
        
        [DataField("MIDDLE_NAME", Size=50)]
        public string MiddleName
        {
            get { return TUtils.SetStringValue(m_MiddleName); }
            set { m_MiddleName = value; }
        }
              
        [DataField("DOB")]
        public object Birhtday
        {
            get { return TUtils.SetObjectValue(m_Birhtday); }
            set { m_Birhtday = value; }
        }
        
        [DataField("SEX")]
        public object Sex
        {
            get { return TUtils.SetObjectValue(m_Sex); }
            set { m_Sex = value; }
        }
    
                 // Skip 
        public TAddress Address
        {
            get 
            {
                if(m_Address == null)
                {
                    m_Address = new TAddress(connectionString);
                    m_Address.GetObject = AddressID;
                }
                return m_Address;
            }
            set 
            {
                m_Address = value;
            }
        }
    }

TAddress : DALSqlEngine
{
}


// получить объект
TPerson Person = new TPerson(m_strConn);
Person.GetObject = 4;
textBox1.Text = Person.FirstName + " " + Person.LastName + "\n\r";
textBox1.Text += Person.Address.Address;

// Хотелось бы...

TPerson Person = new TPerson(m_strConn);
TAddress Address = new TAddress(m_strConn)

Person.Address = Address; 
Person.Save();

// И в базе создается записи в табличках Person & Address
// Сохранить отдельно Person и Address я умею, но вот когда один объект агрегирует другой
// или наследование там...  :xz:
Re[5]: Сериализация объектов в базу данных
От: oRover Украина  
Дата: 15.08.04 13:40
Оценка:
Здравствуйте, <Аноним>, Вы писали:

так это ведь не сериализация, а как раз наоборот. Сериализация — это когда ты объект сиализируешь и сохраняешь в одном поле, а потом вычитываешь из БД и десериализируешь когда надо.
... << Rsdn@Home 1.1.4 beta 1 >>
Re: Сериализация объектов в базу данных
От: PeterZT  
Дата: 15.08.04 17:51
Оценка:
NHibernate
Статья о NHibernate на serverside
OJB.net
Google
... << RSDN@Home 1.1.4 @@subversion >>
Re: Сериализация объектов в базу данных
От: Киркоров  
Дата: 15.08.04 19:19
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Люди, кто-нить таким занимался? Если да, то не могли бы парочку примерчиков кинуть или ссылочки де почитать от ентом можно.


А>Заранее благодарен.



а вот это не про то ?
http://www.rsdn.ru/article/?495
Автор(ы): Тимофей Казаков (TK)
Дата: 14.08.2004
В .NET Framework 1.2 для отображения БД на объекты есть специальный набор классов из пространства имен System.ObjectSpaces.*. Статья рассказывает об этих классах и работе с ними.

Я люблю разговаривать с профессионалами. Профессионалам здесь есть чего делать. Я не хочу чтобы вы пришли сюда ? Вы не прийдете, но прийдете. Так как не уважаете другие форумы, и я прийду. Всё, взяли и пришли.
Re[3]: Сериализация объектов в базу данных
От: rockandroll Казахстан  
Дата: 16.08.04 04:48
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Единственная проблема как мне кажется, что в таком случае нельзя SQL запросы юзать, а очень бы хотелось

А>Мне скорее всего даже не как сами объекты, а их пропертя надо сохранять в таблички. Вот правда встает тогда вопрос, как быть со связями объектов ( как минимум агрегация и наследование, уже не говоря о более сложных )

Похоже на это
Только это совсем не сериализация.
... << RSDN@Home 1.1.4 >>
Re[4]: Сериализация объектов в базу данных
От: Аноним  
Дата: 16.08.04 08:55
Оценка:
Здравствуйте, rockandroll, Вы писали:

R>Здравствуйте, <Аноним>, Вы писали:


А>>Единственная проблема как мне кажется, что в таком случае нельзя SQL запросы юзать, а очень бы хотелось

А>>Мне скорее всего даже не как сами объекты, а их пропертя надо сохранять в таблички.
...

есть коммерческие решения, например DataObjects.NET http://www.x-tensive.com/Ru/
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.