2014-01-15 1 views
1

Я разрабатываю приложение, которое, случается, имеет некоторые записи, которые нужно часто обновлять. Я хотел избежать развертывания SQL Server на клиентском компьютере, поэтому я много читал и думал, что локальный файл .mdf может быть решением (не уверен теперь, если можно избежать развертывания SQL Server, через несколько дней я просто понимаю, что я может быть далеко от правого LOL).Получение локальной базы данных .mdf для работы с приложением WPF C# с использованием VS 2013 Express для рабочего стола

Кроме того, я обнаружил, что существует способ привязки элементов управления к данным путем визуального перемещения объектов из окна источников данных, поэтому я думал, что собираюсь сэкономить много времени, но в конце концов я просто получил действительно путают, потому что я не мог на самом деле написать файл базы данных, а доступная в настоящее время информация кажется довольно неспецифичной и работает/не для многих версий и вкусов VS (то есть WPF, Windows Forms, vs 2008, vs 2010 , и даже более старые версии .NET Framework), поэтому я подумал, что кто-то здесь, в форумах stackoverflow, может иметь эти вещи довольно ясно.

Итак, у меня есть несколько вопросов, я считаю, уберет мое замешательство (и кто-то идет по этой проблеме):

  1. Может .mdf файл на самом деле можно использовать без установки SQL Server?

    VS иногда путается, он предлагает создать локальный файл базы данных, не требуя установки SQL Server, я предполагаю, что я принимаю много вещей как должное, поскольку я не опытный .NET-программист.

  2. Если это невозможно. Есть ли другой способ избежать развертывания SQL Server на клиенте и действительно ли это важно?

    Возможно, я не должен беспокоиться о том, чтобы не развертывать установку SQL Server на клиентской машине?

  3. Могу ли я заставить элементы управления привязанными данными работать с каким-то подобным «автоматическим» вызовом обновления, который записывает изменения непосредственно в базу данных?

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

  4. Имеет ли DataSet временную копию базы данных?

    У меня есть Database.mdf и DataSet.xsd, и после поиска ссылки я до сих пор точно не знаю, что с этими двумя парнями.

+1

Интересный набор проблем. Я бы согласился с тем, что установка SQL Server на клиенте проблематична, особенно если вы ожидаете широкой аудитории. Не могли бы вы использовать централизованную базу данных, размещенную где-нибудь, и иметь службу WCF, которая обрабатывает ваши данные? – paqogomez

+0

** НЕТ ** - если вы хотите использовать файлы '.mdf', у вас должно быть ** определенная форма SQL Server. Visual Studio устанавливает SQL Server ** Express ** как часть своей обычной установки, и это то, что вам потребуется как минимум на клиентском ПК, также для доступа к файлам базы данных .mdf. –

+0

@paqogomez Это всего лишь один клиент но я столкнулся с множеством побочных эффектов установки SQL Server, которые заставляют другие приложения работать не так, как должны, а также деинсталляция - большая проблема, поэтому я думаю, что в пользу чистой установки Лучше избегать этого, особенно когда у приложения будет действительно неопытный пользователь, как в этом случае. – UnbiasedMilo

ответ

8
  1. No. Когда вы создаете новый элемент в вашем проекте, шаблон сервера баз данных на основе создает файл MDF и требует экземпляра SQL Server Express для установки на всех клиентах.

  2. Шаблон локальной базы данных создает файл SDF, который является базой данных SQL Server CE. Несмотря на название, SQL Server CE является совершенно другим продуктом для SQL Server (Express). SQL Server CE не использует сервер, поэтому вы можете установить его на клиент или просто развернуть необходимые библиотеки DLL с вашим приложением.

  3. Запустите мастер источника данных и выберите источник данных. Остальное сделано для вас, пока вы выбираете поддерживаемый источник данных.Вы можете использовать экземпляр SQL Server, SQL Server Express File, SQL Server CE или Access из коробки. Вы также можете поддерживать Oracle, MySQL и другие с загрузкой сторонних поставщиков.

  4. MDF - это фактический файл данных, такой же, как большой SQL Server, используется для хранения данных. XSD - это определение схемы XML для DataSet, которое является классом, как и любой другой. Когда вы извлекаете данные из базы данных, вы используете адаптер таблицы, который является экземпляром настраиваемого класса, созданного мастером источника данных. Этот адаптер таблицы обертывает стандартные соединения ADO.NET и объекты адаптера данных, которые вы использовали бы сами, если вы не использовали мастер. Метод Fill адаптера таблицы заполняет DataTable в DataSet, который также является настраиваемым классом, созданным мастером, который наследует стандартные классы DataTable и DataSet. После внесения необходимых изменений в данные вы вызываете Update на адаптере таблицы, чтобы сохранить изменения обратно в базу данных. Если ваши элементы управления связаны, то заполнение DataTable автоматически заполнит ваши элементы управления, и внесение изменений в ваши элементы управления автоматически изменяет данные в DataTable.

+0

Вот как я построил базу данных: лучшим способом сделать это для этого проекта было использование EntityFramework с CodeFirst и SQLServer CE. Установите SQLServer CE 4.0 и пакет nuget для проекта A, реализуйте модель в проекте B с помощью ModelFirst и скопируйте все классы таблиц и класс Context в проект A, а затем используйте все скопированные классы для создания ADO.NET Entity Data Model, используя CodeFirst в проекте A, в консоли диспетчера пакетов, введите Enable-Migrations в проекте A, затем введите Add-Migration и дайте ему имя, затем введите Update-Database, и вы хорошо пойдете. – UnbiasedMilo