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:
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.