Здравствуйте, Аноним, Вы писали:
А>Люди, кто-нить таким занимался? Если да, то не могли бы парочку примерчиков кинуть или ссылочки де почитать от ентом можно.
А>Заранее благодарен.
Я делаю это так:
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>
Единственная проблема как мне кажется, что в таком случае нельзя SQL запросы юзать, а очень бы хотелось
Мне скорее всего даже не как сами объекты, а их пропертя надо сохранять в таблички. Вот правда встает тогда вопрос, как быть со связями объектов ( как минимум агрегация и наследование, уже не говоря о более сложных )
Здравствуйте, Аноним, Вы писали:
А>Единственная проблема как мне кажется, что в таком случае нельзя 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:
так это ведь не сериализация, а как раз наоборот. Сериализация — это когда ты объект сиализируешь и сохраняешь в одном поле, а потом вычитываешь из БД и десериализируешь когда надо.
Здравствуйте, Аноним, Вы писали:
А>Люди, кто-нить таким занимался? Если да, то не могли бы парочку примерчиков кинуть или ссылочки де почитать от ентом можно.
А>Заранее благодарен.
Я люблю разговаривать с профессионалами. Профессионалам здесь есть чего делать. Я не хочу чтобы вы пришли сюда ? Вы не прийдете, но прийдете. Так как не уважаете другие форумы, и я прийду. Всё, взяли и пришли.
Здравствуйте, <Аноним>, Вы писали:
А>Единственная проблема как мне кажется, что в таком случае нельзя SQL запросы юзать, а очень бы хотелось А>Мне скорее всего даже не как сами объекты, а их пропертя надо сохранять в таблички. Вот правда встает тогда вопрос, как быть со связями объектов ( как минимум агрегация и наследование, уже не говоря о более сложных )
Здравствуйте, rockandroll, Вы писали:
R>Здравствуйте, <Аноним>, Вы писали:
А>>Единственная проблема как мне кажется, что в таком случае нельзя SQL запросы юзать, а очень бы хотелось А>>Мне скорее всего даже не как сами объекты, а их пропертя надо сохранять в таблички.
...