DataSet-ы ADO.Net vs. бизнес-сущности
кто-нибудь вообще использует DataSet-ы?
я, например. Вот только не знаю что такое "бизнес-сущности"
1. DataSet - всегда навязывает реляционный подход
2. DataSet - тяжело интегрировать с внешними модулями (когда DataSet должен откуда-то брать данные)
3. DataSet - непрозрачное решение, т.е. если при использование бизнес-сущностей можно про базу не знать, то с DataSet-ом про базу надо знать обязательно.
class Client{...}
class Order{...}
....
при этом данные в экземпляры этих классов грузятся из реляционной БД. Подгрузку можно самим писать, можно использывать, например, Lazy-объекты ( о них тут как-то писал).
используете ли вы иморт XSD-типов <xs:impot>, <xs:include>?
А в VS2005 я вообще не нашел как посмотреть XML-текст схемы, раньше кнопочка была для переключения между представлениями, сейчас ее нет, а если самому заглянуть в файл, то теперь туда добавляется много какой-то "лишней" информации. Я вообще не нашел, как в VS2005 сделать иморт (даже свойств таких теперь нет).
Не знаю что 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'ами (нетипизированными) меньше ошибок отлавливается на этапе компиляции.
<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:
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;
}
}
}
В общем, учи матчасть. Удачи!
Console.WriteLine(ds.Tables.Count.ToString;
4 , для хранения этой информации достаточно одной таблицы. Так что учиться тебе надо
Напишешь правильную схему для XML-я, будет тебе одна таблица. А получить схему из самого XML-я однозначно нельзя, всегда будут альтернативные варианты
1. соответствовала этому XML-файлу
2. содержала одну таблицу
Как быть, например, с деревом файловой системы?
Как быть с полиморфными деревьями?
в схемеу таблицы Tracs всего один столбец, однако, если посмотреть из кода, то их два CD_id и Trac_id, т.е. реляционная схема DataSet-а нетривильно получатся из XML-схемы, вот это пипец
вообще, подразумевалось осмысленно загрузить, чтобы потом можно было пользоваться этим DataSet-ом, сохранять в БД и т.д. , а загрузить можно и в одну ячейку весь XML как стринг.
Как быть с полиморфными деревьями?
Это да, с этим проблемы: реляционная СУБД никакого полиморфизма не допускает
реляционная СУБД никакого полиморфизма не допускает
но древовидные структуры они нормально поддерживаютЯ правильно понял, что полиморфные данные - не относятся к нормальному "программированию"?
вернее,
что использование полиморфных отношений при описание данных - это ненормально?
2. отношений между чем? ... типами. А что такое типы в случае описания данных? классы, в которых присутствуют только поля?
Я писал, что можно сделать более продвинутые средства описания данных(программ чем существующие описания данных.
> отношений между чем? ... типами. А что такое типы в случае описания данных? классы, в которых присутствуют только поля?
Скорее "стандартный" тип: т.е. возможные состояния(поля возможные переходы между состояниями (операции, методы ограничения.
Оставить комментарий
6yrop
В чем недостатки DataSet-ов по сравнению с бизнес-сущностями?В .Net DataSet-ы основная составляющая механизма доступа к базам данных, как с этим обстоит дело в Java? есть ли в самой технологии Java аналоги DataSet-ов? если нет, то что там предлагается?
На rsdn было высказано (тред Зыче нужен Rsdn.Framework.Data?) вот такое мнение