Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как правильно работать с данными. 
:(
    Опции темы
ivanfain
Дата 22.4.2012, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 17.3.2012

Репутация: нет
Всего: нет



Есть составное десктопное приложение WPF. Работаем с MSSQL через EF. EF сущности находятся в отдельном модуле (каждый модуль сборка) Data.dll. В отдельных модулях приходится работать с различными сущностями, сгенерированными EF с БД. Если меняем незначительно структуру БД приходится переписывать работу с данными во многих работающих модулях.
Как можно сделать так, чтобы написанный однажды модуль работал независимо от изменения данных. Ну хотя бы так, чтобы данных можно было менять только в одном месте.
Как вариант определить сущности в сборке Data.dll, которые будут строится с сущностей EF. Но в таком случае теряем гибкость запросов. 
Как тут поступить? Как сделать независимость каждого модуля, кроме Data.dll, от изменения данных в БД и при этом сохранить возможность генерить эффективные запросы к БД?
PM MAIL   Вверх
erm0l0v
Дата 25.4.2012, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 11.1.2011

Репутация: нет
Всего: 1



Уходите от непосредственного использования сущностей сгенерированных в EF вне сборки Data.dll. Создайте свои сущности которые будут содержать внутри себя ссылку на сущность EF и делегировать функциональность. Но это все равно не спасет при глобальном изменении БД. Так как обычно БД меняется не просто сама по себе, а при изменении логики самого приложения. Кстати в этом и есть основная идея EF. Вы создаете просто сущности в вашем приложении а БД это все лишь инструмент призванный сохранить эти сущности во времени.
PM MAIL   Вверх
Flass
  Дата 27.5.2012, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 26.5.2012

Репутация: нет
Всего: нет



Решил добавить свой вопрос сюда, так как он тоже связан с хранением данных.
Пишу на C# и столкнулся с проблемой.
Есть документ XML. который представляет из себя вот что:

Код

<?xml version="1.0" encoding="iso-8859-1"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2">
<Document>
  <!-- Begin Style Definitions -->
  <Style id="area1">
    <LineStyle>
      <color>FF000000</color>
      <width>1</width>
    </LineStyle>
    <PolyStyle>
      <color>BF000000</color>
      <fill>0</fill>
      <outline>1</outline>
    </PolyStyle>
  </Style>
  <Folder>
    <name>Area Features</name>
    <description>Area Features</description>
    <Placemark>
      <description>Unknown Area Type</description>
      <styleUrl>#area1</styleUrl>
      <Polygon>
        <outerBoundaryIs>
          <LinearRing>
            <coordinates>
              85.0620149611,56.4730628152,0
              85.0620098926,56.4729651555,0
              85.0622567155,56.4729612316,0
              85.0622617838,56.4730588913,0
              85.0620149611,56.4730628152,0
            </coordinates>
          </LinearRing>
        </outerBoundaryIs>
      </Polygon>
    </Placemark>
и далее в том же духе, до n


есть код, который должен вставлять в каждый полигон после тегов  <coordinates> </coordinates> строку <altitude>relativeToGround</altitude>
Повторюсь, нужно - в каждый полигон!
Привожу код.

Код

void ParseKML(string _Path)
        {

            XmlDocument doc = new XmlDocument();
            doc.Load(_Path);
            XmlNamespaceManager nmr = new XmlNamespaceManager(doc.NameTable);
            nmr.AddNamespace("opengis", @"http://www.opengis.net/kml/2.2");
            nmr.AddNamespace("google", @"http://www.google.com/kml/ext/2.2");
            XmlNodeList nodes = doc.SelectNodes(@"//opengis:Polygon", nmr);
            for (int i = 0; i < nodes.Count; i++)
            {
                var first = nodes[i];
                ProcessPolygon(doc, first as XmlNode, nmr);
                MessageBox.Show(first.InnerXml);
            }
           
                doc.Save(SaveFileDialog1.FileName);
            }
 
        }
        static void ProcessPolygon(XmlDocument doc, XmlNode polygon, XmlNamespaceManager xnm)
        {
            if (polygon == null) return;

            var relativeToGroundElement = doc.CreateElement("altitude", @"http://www.opengis.net/kml/2.2");
            var linearRingElement = polygon.SelectSingleNode(@"//opengis:LinearRing", xnm);
            relativeToGroundElement.InnerText = "relativeToGround";
            linearRingElement.AppendChild(relativeToGroundElement);
            
        }


почему то, данный код вставляет элемент <altitude>relativeToGround</altitude> только в первый узел Polygon.
Т.е. выходной файл выглядит так:
Код

styleUrl>#area1</styleUrl>
       <Polygon>
         <outerBoundaryIs>
           <LinearRing>
             <coordinates>
             85.0620149611,56.4730628152,0
             85.0620098926,56.4729651555,0
             85.0622567155,56.4729612316,0
             85.0622617838,56.4730588913,0
             85.0620149611,56.4730628152,0
           </coordinates>
             <altitude>relativeToGround</altitude>
             <altitude>relativeToGround</altitude>
             <altitude>relativeToGround</altitude>
             .....................................
             n = PolygonList.Count


а мне нужно добавлять этот элемент в каждый узел Polygon. Как победить эту проблему? Абсолютно нет догадок почему так происходит.
здесь
Код

var relativeToGroundElement = doc.CreateElement("altitude", @"http://www.opengis.net/kml/2.2");
            var linearRingElement = polygon.SelectSingleNode(@"//opengis:LinearRing", xnm);
            relativeToGroundElement.InnerText = "relativeToGround";
            linearRingElement.AppendChild(relativeToGroundElement);

полигон берётся новый, но appendchild происходит только в первый! Как же так?
Разве код var linearRingElement = polygon.SelectSingleNode(@"//opengis:LinearRing", xnm); не должен выбирать в каждом новом полученном полигоне свою точку вставки?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0415 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.