А вообще, можно из строки удалить все пробелы, все символы "0", и посмотреть на длину остатка. Нулевая строка после всех удалений превратится в пустую строку.
Если родителей двое, и родственники считаются до колена n, на больших БД будет тяжело без индексов по новым столбцам. Это если связи типа родитель-ребенок. Могут быть отчимы, приемные родители, или какое множественное наследование.
Для одиночной простой связи Ваш вариант точно рабочий.
??
Либа .NET, подключается быстро, используется просто, лишние телодвижения не нужны, нужная функциональность "доступна из коробки".
Если нет религиозных запретов на VB или необходимости тонкой настройки - вполне себе решение.
База мелкой была. Чисто учебная задача, что-то связанное с тривиумом генетики. По идее, если родственные отношения сложные, родственные связи не разрываются, и инфа по связям нужна часто, и родственников у особи немного (o(1)) - нормальный вариант.
Тут бы конкретно на задачку посмотреть: как высчитывается связь и предполагаемый размер данных.
Лучше, все-таки, WCF-сервисы.
Тут есть пример www.youtube.com/watch?v=KY1w9nwRL5I. Создаете базу, даете к ней доступ WCF-серверу, WCF-клиенты раз в пять секунд стучат к серверу, получают от него ответы.
Я бы еще посмотрел на реализацию запрос от клиентов. Может, они требуют от БД ВСЕ сообщения, которые отсылал админ? Тогда может быть достаточно поставить ограничение по дате. То есть, запрашивать сообщения, созданные после уже полученных.
Я в свое время создавал таблицу "родственные связи". Столбцы Первый_Родственник_Ид и Второй_Родственник_Ид являлись сложным ключом. Плюс скрипт, который при прогоне основной таблицы заполнял "родственные связи".
Статический класс будет чуть лучше: при подключении его в новый проект не будет проблем. Если использовать partial class - в новом проекте обязательно придется использовать public partial class MainForm.
SQL Server Express (бесплатная для обучения). Ставите все галочки при установке. Версию выберите соответствующую студии.
Кстати, БД можно создать без студии, в командной строке выполните
sqlcmd -S -Q "Create database "
https://msdn.microsoft.com/ru-ru/library/system.wi...(v=vs.110).aspx
Application.StartupPath указывает на каталог, в котором валяется экзешник, запустивший программу, если Вы об этом.
А вообще есть System.IO.Path для работы с путями.
Кирилл: Да, на тему кучи и стека один Сидристый может так извратиться...
Зачем нужны - взаимодействие с неуправляемым кодом, тот же маршалинг. Однажды реализовывал протокол обмена данными с одним старым плюсовым сервером - без структур бы спился. Методы (функции), хранящиеся в старых Сишных бинарниках могут возвращать структуры.
Кирилл: Медленное сравнение потому, что основывается на рефлексии. Недаром рекомендуется при объявлении структуры первым делом переписать Equals(). И GetHashCode() заодно. Честно говоря, там есть довольно тонкие моменты, в двух словах не опишешь. Если очень надо, напишите, поищу выступление Теплякова, он это на одном из вебинаров рассматривал.
По поводу упорядоченной передачи - это достигается и с помощью классов, если мы подразумеваем одно и тоже под словом порядок. Никакого различия в этом у классов и структур нет. Разве что, у структур проще организовать маршалинг, но в этом случае вы бы свой вопрос не задавали.
mayorovp: Если я изменю BindingList - изменится связанный с ним UI элемент управления. Если я изменяю UI элемент - BindingList не изменится (без дополнительного рутинного кода).
Изначальный вопрос можно переформулировать как "Существует ли коллекция, которую можно связать с DataGridView (ListBox) так, чтобы изменения в DGV, вносимые юзером во время работы программы, тут же отражались в коллекцию без дополнительного рутинного кода".
Грубо говоря, есть у меня коллекция и DGV. Добавились во время работы программы 3 строки в коллекцию - тут же добавились 3 строки в DGV. Юзер почесал в затылке, удалил две строки из DGV - две строки тут же удалились из коллекции. Вот чего хочется.
Я хочу в одном методе работать либо только с коллекцией, либо только UI контролом (кроме момента установки связи). Как-то так.