Большой Воронежский Форум
» Программирование>[С#] ObservableCollection + БД.
RedName 22:27 24.02.2012
Есть одна коллекция

Код:
public ObservableCollection<StreetViewModel> Streets { get; set; }
        
        public StreetsViewModel()
        {          
            Streets = new ObservableCollection<StreetViewModel>();
          
            Streets.Add(new StreetViewModel(new Street
            {
                Name = "Moskovski prospect",
                CarsVolume = 20,
                PathStr = "линия кароче"
            }));
         }
Кто нибудь может показать как значение CarsVolume брать из какой либо БД. SQl или даже XML не важно. Оче надо, а с БД оче плохо всё. [Ответ]
Spectator 22:39 24.02.2012
Не-не-не. Так дело не пойдет.
Я сейчас внесу в требования указывать в темах язык программирования. И твоя тема подпадет под эти требования и соседняя, AlexanderSergeev'а.
Требования будут такими - темы по вопросам, связанным с конкретным языками программирования указывать "префикс" языка.
Существующие самостоятельно переименую, наказывать задним числом, понятно, не буду.
Это, я так понимаю, у нас Java. Если вдруг не так - поправь. [Ответ]
silly 22:42 24.02.2012
Это С#. Вот вопрос мне совсем не понятен. [Ответ]
Spectator 22:46 24.02.2012

Сообщение от silly:
Это С#. Вот вопрос мне совсем не понятен.

Замечательно. Пусть будет C#
Вопросов вроде бы с моей стороны не было, тему переименовал, сейчас размещу настоятельную просьбу в названии темы указывать язык программирования в подобных темах.
[Ответ]
RedName 23:06 24.02.2012

Сообщение от silly:
Это С#. Вот вопрос мне совсем не понятен.

Напрмиер есть XML фаил в котором

Код:
<?xml version="1.0" encoding="utf-8" ?>
<Streets>
   <Street>
      <Name>Moskovski prospect</Name>
      <CarsCount>100></CarsCount>
   </Street>
</Streets>
и вон та ObservableCollection, в которой нужно значение CarsCount получить из этого XML.

Я в каких либо операциях с Бд полный ноль. Поэтому, если можно, привести пример как это сделать. МОжно и SQL взять. Мне без разницы. [Ответ]
RedName 23:08 24.02.2012

Сообщение от Spectator:
Замечательно. Пусть будет C#
Вопросов вроде бы с моей стороны не было, тему переименовал, сейчас размещу настоятельную просьбу в названии темы указывать язык программирования в подобных темах.

К сожалению, название темы редактировать нельзя. Я и сам хотел поправить. [Ответ]
Spectator 23:16 24.02.2012

Сообщение от RedName:
К сожалению, название темы редактировать нельзя. Я и сам хотел поправить.

Вполне можно обратиться ко мне в личку в таких случаях.
Даже нужно, если понял что не подумал, когда название темы придумывал. [Ответ]
silly 23:33 24.02.2012
Переделано из студенческого:

Код:
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
using System.Xml.Linq;

public class Street
{
	public string Name {get; set;}
	public long CarsCount {get; set;}
}

public class XmlStreetReader : IDisposable
{
	Stream sourceStream;
	
	public XmlStreetReader(string fileName)
	{
		sourceStream = new FileStream(fileName, FileMode.Open);
	}
	
	public void Dispose()
	{
		sourceStream.Dispose();
	}
	
	public IEnumerable<Street> Streets
	{
		get { return StreetsEnumerable(); }
	}
	
	private IEnumerable<Street> StreetsEnumerable()
	{
		using (var reader = XmlReader.Create(sourceStream)) {

			while (reader.Read()) {
				if (reader.NodeType == XmlNodeType.Element && reader.Name == "Street") {
					
					var street = new Street();
					var streetNode = (XElement)XElement.ReadFrom(reader);
					
					foreach (var desc in streetNode.Descendants()) {
						if (desc.NodeType == XmlNodeType.Element) {
							switch (desc.Name.ToString()) {
								case "Name":      street.Name      = desc.Value; break;
								case "CarsCount": street.CarsCount = long.Parse(desc.Value); break;
							}
						}
					}
					
					yield return street;
				}
			}
		}
	}
}

class Application
{
	public static void Main()
	{
		using (var reader = new XmlStreetReader("streets.xml")) {
			foreach (var street in reader.Streets) {
				Console.WriteLine("{0}: {1}", street.Name, street.CarsCount);
			}
		}
	}
}
Sqlite для подобных целей тоже ничего, кстати. [Ответ]
RedName 00:30 25.02.2012
Всё круто конечно, но нельзя все таки с ObservableCollection? [Ответ]
silly 00:48 25.02.2012
Прочитал из файла, добавил в коллекцию. Какие проблемы? [Ответ]
scanNE® 15:17 25.02.2012
и это кодеры Воронежа? п-ц ! полный п-ц

http://msdn.microsoft.com/ru-ru/library/ms668604.aspx [Ответ]
Spectator 15:42 25.02.2012

Сообщение от scanNE®:
и это кодеры Воронежа? п-ц ! полный п-ц

Тихо-тихо-тихо.
Без наездов.
Мы все учились понемногу, Чему-нибудь и как-нибудь. (с) АС Пушкин. [Ответ]
silly 20:43 25.02.2012

Сообщение от scanNE®:
и это кодеры Воронежа? п-ц ! полный п-ц

http://msdn.microsoft.com/ru-ru/library/ms668604.aspx

Да тут как раз первым же постом в теме идет пример добавления объекта в ObservableCollection.

Рискну предположить, у ТС проблемы с пониманием MVVM и построением архитектуры своей поделки. [Ответ]
RedName 18:10 29.02.2012

Сообщение от silly:
Да тут как раз первым же постом в теме идет пример добавления объекта в ObservableCollection.

Рискну предположить, у ТС проблемы с пониманием MVVM и построением архитектуры своей поделки.

С MVVM и архитектурой всё прекрасно, всё работает. Написал же - с бд у меня оче плохо. [Ответ]
silly 00:14 01.03.2012

Сообщение от RedName:
С MVVM и архитектурой всё прекрасно, всё работает.

Только если в первом посте действительно пример, а не кусок кода из программы. По-моему, для реального разделения M и VM, StreetViewModel и Street стоило бы засунуть в разные коллекции. Также, если StreetViewModel ничем толком не отличается от Street, то можно вообще не реализовывать StreetViewModel, это будет просто лишняя обертка. [Ответ]
RedName 00:36 03.03.2012

Сообщение от silly:
Только если в первом посте действительно пример, а не кусок кода из программы. По-моему, для реального разделения M и VM, StreetViewModel и Street стоило бы засунуть в разные коллекции. Также, если StreetViewModel ничем толком не отличается от Street, то можно вообще не реализовывать StreetViewModel, это будет просто лишняя обертка.

Нет это кусок кода программы и всё там на своих местах как и должно быть. А про обёртки, разные коллекции могу только посоветовать перечитать про MVVM. [Ответ]
silly 15:21 03.03.2012
Так вы нашли ответ на свой вопрос? [Ответ]
RedName 20:07 03.03.2012

Сообщение от silly:
Так вы нашли ответ на свой вопрос?

Пока нет. [Ответ]
SS20 21:02 03.03.2012
RedName, в том куске кода, что приведен в теме есть свойство или функция, возвращающая данные из xml в виде IEnumerable. Что мешает из этой коллекции добавить в любую другую, хотя бы даже и Observable, который тоже реализует IEnumerable? [Ответ]
RedName 09:38 06.03.2012

Сообщение от SS20:
RedName, в том куске кода, что приведен в теме есть свойство или функция, возвращающая данные из xml в виде IEnumerable. Что мешает из этой коллекции добавить в любую другую, хотя бы даже и Observable, который тоже реализует IEnumerable?

Думал уже над этим. [Ответ]
Вверх