DataSet-ы ADO.Net vs. бизнес-сущности
кто-нибудь вообще использует DataSet-ы?
я, например. Вот только не знаю что такое "бизнес-сущности" 

> В чем недостатки DataSet-ов по сравнению с бизнес-сущностями?
1. DataSet - всегда навязывает реляционный подход
2. DataSet - тяжело интегрировать с внешними модулями (когда DataSet должен откуда-то брать данные)
3. DataSet - непрозрачное решение, т.е. если при использование бизнес-сущностей можно про базу не знать, то с DataSet-ом про базу надо знать обязательно.
1. DataSet - всегда навязывает реляционный подход
2. DataSet - тяжело интегрировать с внешними модулями (когда DataSet должен откуда-то брать данные)
3. DataSet - непрозрачное решение, т.е. если при использование бизнес-сущностей можно про базу не знать, то с DataSet-ом про базу надо знать обязательно.
да, я сам не знаю
Мои представления такие. Пусть у нас есть клиенты, заказы и т.д., для них заводятся классы
при этом данные в экземпляры этих классов грузятся из реляционной БД. Подгрузку можно самим писать, можно использывать, например, Lazy-объекты ( о них тут как-то писал).
Мои представления такие. Пусть у нас есть клиенты, заказы и т.д., для них заводятся классы
class Client{...}
class Order{...}
....
при этом данные в экземпляры этих классов грузятся из реляционной БД. Подгрузку можно самим писать, можно использывать, например, Lazy-объекты ( о них тут как-то писал).
используете ли вы иморт XSD-типов <xs:impot>, <xs:include>?
дело в том, что, как отметили на rsdn, в случае импорта VS7 не производит автаматическую перегенирацию классов датасетов.
А в VS2005 я вообще не нашел как посмотреть XML-текст схемы, раньше кнопочка была для переключения между представлениями, сейчас ее нет, а если самому заглянуть в файл, то теперь туда добавляется много какой-то "лишней" информации. Я вообще не нашел, как в VS2005 сделать иморт (даже свойств таких теперь нет).
А в VS2005 я вообще не нашел как посмотреть XML-текст схемы, раньше кнопочка была для переключения между представлениями, сейчас ее нет, а если самому заглянуть в файл, то теперь туда добавляется много какой-то "лишней" информации. Я вообще не нашел, как в VS2005 сделать иморт (даже свойств таких теперь нет).
а какая нахрен разница?.. Делаешь сериализуемый класс, после чего объект можно перегонять в XML, а XML - в DataSet. Или наоборот.
Не знаю что DataSet'ы навязывают, но древовидные структуры они нормально поддерживают
Не знаю что DataSet'ы навязывают, но древовидные структуры они нормально поддерживают
DataSet-ы - они "мертвые", но на бизнес-уровне удобнее работать с "живыми" объектами.
по поводу DataSet-ов и XML, и XML вообще
DataSet-ы это реляционка -- набор тайблов, поэтому они поддерживают древовидные структуры так же "хорошо" как и реляционка
Well, of course it's XML, but if I say, hey take this sentence, it's in the ASCII character set (who care's if it isn't English) Le "DataSet" n'est pas votre ami si vous faites des Services de Web. Well, Barry can understand that, but I no hablo French
DataSet'ы ... древовидные структуры ... нормально поддерживают
DataSet-ы это реляционка -- набор тайблов, поэтому они поддерживают древовидные структуры так же "хорошо" как и реляционка
DataSet-ы это реляционка -- набор тайблов, поэтому они поддерживают древовидные структуры так же "хорошо" как и реляционка
А как же навигация по дереву? Например, DataRow.GetParentRow DataRow.GetChildRows?
разница только в строгости типов. С DataSet'ами (нетипизированными) меньше ошибок отлавливается на этапе компиляции.
тк это навигация по схеме реляционной базы, в большинстве случаев это действительно дерево (в общем случае это ориентированный граф но дерево реляционной схемы. Это деревья не общего вида, которые можно хранить в XML. Например, вполне логично иметь вот такой XML
как ты его будешь загружать в DataSet? потребуеся дополнительное преобразование
<CustomUISample>
<CDCollection>
<CD>
<Title>Meisner Darrell</Title>
<Artist>Meisner Darrell</Artist>
<Tracks>
<Track>When The Saints Go Marching In</Track>
<Track>On The Sunny Side Of The Street</Track>
<Track>Ain't Misbehavin'</Track>
</Tracks>
<Label></Label>
</CD>
<CD>
<Title>Abbas Syed</Title>
<Artist>Abbas Syed</Artist>
<Tracks>
<Track>Dreams</Track>
<Track>5150</Track>
</Tracks>
</CD>
<CD>
<Title>Cencini Andrew</Title>
<Artist>Cencini Andrew</Artist>
<Tracks>
<Track>Once upon a time in the west</Track>
<Track>Expresso love</Track>
<Track>Romeo and Juliet</Track>
</Tracks>
<Label>Southridge Video</Label>
</CD>
<CD>
<Title>Entin Michael</Title>
<Artist>Entin Michael</Artist>
<Tracks>
<Track>Alpine valley</Track>
<Track>Plains of joy</Track>
<Track>Waitin' guitar</Track>
</Tracks>
<Label>Contoso Ltd.</Label>
</CD>
<CD>
<Title>Baker Mary</Title>
<Artist>Baker, Mary</Artist>
<Tracks>
<Track>Subdivisions</Track>
<Track>Time Stand Still</Track>
<Track>Mystic Rhythms</Track>
</Tracks>
<Label>Lucerne Publishing</Label>
</CD>
<CD>
<Title>Kane Lori</Title>
<Artist>Kane Lori</Artist>
<Tracks>
<Track>Eine kleine Nachtmusik:Allegro</Track>
<Track>Piano Concerto in A major, K 488: Adagio</Track>
<Track>Flute Concerto in D major, K 314: Allegro</Track>
</Tracks>
<Label></Label>
</CD>
<CD>
<Title>Zimmerman Marc</Title>
<Artist>Zimmerman Marc</Artist>
<Tracks>
<Track>via Medina</Track>
<Track>Evviva 'o Rre'</Track>
<Track>Tempo di cambiare</Track>
</Tracks>
<Label>Proseware Inc.</Label>
</CD>
</CDCollection>
</CustomUISample>
как ты его будешь загружать в DataSet? потребуеся дополнительное преобразование
Да-а, абзац!
Потребовалось архисложное преобразование, добавляющее в начало твоего XML-я строку
<?xml version="1.0" encoding="utf-8" ?>
и мегакрутая прога, читающая твой XML в DataSet:
В общем, учи матчасть. Удачи!
Потребовалось архисложное преобразование, добавляющее в начало твоего XML-я строку
<?xml version="1.0" encoding="utf-8" ?>
и мегакрутая прога, читающая твой XML в DataSet:
using System;
using System.Data;
namespace xml_test
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
DataSet ds = new DataSet;
ds.ReadXml(@"..\..\XMLFile1.xml");
Console.WriteLine(ds.GetXmlSchema;
}
}
}
В общем, учи матчасть. Удачи!

ты посмотри сколько у тебя таблиц получилось
4
, для хранения этой информации достаточно одной таблицы. Так что учиться тебе надо
Console.WriteLine(ds.Tables.Count.ToString;
4
, для хранения этой информации достаточно одной таблицы. Так что учиться тебе надоНапишешь правильную схему для XML-я, будет тебе одна таблица. А получить схему из самого XML-я однозначно нельзя, всегда будут альтернативные варианты
напиши правильную схему, которая
1. соответствовала этому XML-файлу
2. содержала одну таблицу
1. соответствовала этому XML-файлу
2. содержала одну таблицу
> А как же навигация по дереву? Например, DataRow.GetParentRow DataRow.GetChildRows?
Как быть, например, с деревом файловой системы?
Как быть с полиморфными деревьями?
Как быть, например, с деревом файловой системы?
Как быть с полиморфными деревьями?

в схемеу таблицы Tracs всего один столбец, однако, если посмотреть из кода, то их два CD_id и Trac_id, т.е. реляционная схема DataSet-а нетривильно получатся из XML-схемы, вот это пипец
вообще, подразумевалось осмысленно загрузить, чтобы потом можно было пользоваться этим DataSet-ом, сохранять в БД и т.д. , а загрузить можно и в одну ячейку весь XML как стринг.
Как быть с полиморфными деревьями?
Это да, с этим проблемы: реляционная СУБД никакого полиморфизма не допускает

реляционная СУБД никакого полиморфизма не допускает
но древовидные структуры они нормально поддерживаютЯ правильно понял, что полиморфные данные - не относятся к нормальному "программированию"?
вернее,
что использование полиморфных отношений при описание данных - это ненормально?
1. Ты же писал, что такого описания данных еще не существует ( и выше в том же треде).
2. отношений между чем? ... типами. А что такое типы в случае описания данных? классы, в которых присутствуют только поля?
2. отношений между чем? ... типами. А что такое типы в случае описания данных? классы, в которых присутствуют только поля?
> Ты же писал, что такого описания данных еще не существует (тут и выше в том же треде).
Я писал, что можно сделать более продвинутые средства описания данных(программ чем существующие описания данных.
> отношений между чем? ... типами. А что такое типы в случае описания данных? классы, в которых присутствуют только поля?
Скорее "стандартный" тип: т.е. возможные состояния(поля возможные переходы между состояниями (операции, методы ограничения.
Я писал, что можно сделать более продвинутые средства описания данных(программ чем существующие описания данных.
> отношений между чем? ... типами. А что такое типы в случае описания данных? классы, в которых присутствуют только поля?
Скорее "стандартный" тип: т.е. возможные состояния(поля возможные переходы между состояниями (операции, методы ограничения.
Оставить комментарий
6yrop
В чем недостатки DataSet-ов по сравнению с бизнес-сущностями?В .Net DataSet-ы основная составляющая механизма доступа к базам данных, как с этим обстоит дело в Java? есть ли в самой технологии Java аналоги DataSet-ов? если нет, то что там предлагается?
На rsdn было высказано (тред Зыче нужен Rsdn.Framework.Data?) вот такое мнение