Я работаю в Visual Studio 2010, используя linq-to-sql's DataContext
, который имеет несколько карт для таблиц в базе данных. Теперь, когда я что-то меняю на структуру базы данных, я заметил, что DataContext
не изменяется и приводит к ошибкам. DataContext больше не соответствует структуре базы данных. Обычно я разрешаю эту проблему, удаляя все таблицы в DataContext и перетаскивая &, чтобы удалить их из проводника базы данных в Visual Studio. Я просто чувствую, что это очень громоздко и что должен быть лучший способ сделать это? Есть ли кнопка или опция для автоматического обновления DataContext при изменении структуры базы данных?Как обновить DataContext на основе изменений в структуре базы данных?
ответ
Модели Linq2Sql отсоединяются от источника данных после их создания. Только в точке перетаскивания & удаляются элементы из проводника источника данных, в результате которого выполняется соединение, и запрашивается схема базы данных. Если ваши изменения схемы небольшие (т. Е. Новый столбец таблицы), их достаточно просто добавить вручную. Для более радикальных изменений схемы ваш текущий метод, вероятно, самый быстрый и простой.
Это is можно автоматизировать этот процесс генерации кода с помощью инструмента командной строки sqlmetal.exe. Я работал над проектами в прошлом с схемами базы данных, которые постоянно менялись, и мы вызывали sqlmetal перед каждой сборкой, поэтому мы получили полезные ошибки компиляции при ее изменении. Если ваша схема не меняется так сильно, вы можете просто иметь пакетный файл в своем проекте для обновления модели Linq2Sql, когда это необходимо.
Я дам 'sqlmetal' попытку, я прочитал вам статью и верю, что это то, что мне нужно. – Bazzz
пусть connectionstrin быть: строка с = @ "Источник данных = (LocalDB) \ v11.0; AttachDbFilename = C: \ Program Files \ Microsoft SQL Server \ MSSQL11.MSSQLSERVER \ MSSQL \ DATA \ AdventureWorks2012_Data.mdf; Integrated Security = True; время ожидания подключения = 30 "; быть нижеуказанным
и задачи обновления:
public async Task callupdate()
{
try
{
int ppp = Convert.ToInt32(textBox1ID.Text);
DataClasses1DataContext dc = new DataClasses1DataContext(pp);
Person person = dc.Persons.Single(c => c.BusinessEntityID == ppp);
person.PersonType = Convert.ToString(PersonTypecomboBox1.SelectedItem);
person.PersonType = Convert.ToString(PersonTypecomboBox1.SelectedItem);
if (NameStylecomboBox1.SelectedText == "False")
person.NameStyle = false;
else
person.NameStyle = true;
person.Title = Convert.ToString(TitlecomboBox1.SelectedItem);
person.FirstName = FirstNametextBox2.Text;
person.MiddleName = MiddleNametextBox3.Text;
person.LastName = LastNametextBox4.Text;
person.Suffix = SuffixtextBox5.Text;
person.EmailPromotion = Convert.ToInt32(EmailPromotiontextBox6.Text);
person.ModifiedDate = DateTime.Today;
dc.SubmitChanges();
}
catch(Exception exp)
{
}
}
вместо DataClasses1DataContext dc = new DataClasses1DataContext();
DataClasses1DataContext dc = new DataClasses1DataContext(pp);
VBY вызова SubmitChanges()
данные обновление, которое является объектом нашего класса на самом деле записывается в фактическая база данных
Вы, кажется, совсем не поняли вопрос. –
В EF Core
вы можете найти полезная команда "scaffolding".
Леса могут регенерировать DbContext
, а также ваши модели. И по моему опыту, он не будет переопределить любые пользовательские partial classes
, которые вы сделали для расширения DbContext
, чтобы они продолжали работать.
Вам может понадобиться установить некоторые инструменты, добавив их в свой project.json (старый)/csproj (новый)
DotNet кли
dotnet ef dbcontext scaffold --help`
Usage: dotnet ef dbcontext scaffold [arguments] [options]
Arguments:
<CONNECTION> The connection string to the database.
<PROVIDER> The provider to use. (E.g. Microsoft.EntityFrameworkCore.SqlServer)
Эта команда (запускается из корневой директории проекта, предполагая, что вы сохраняете свои модели в папке «Модели»); 1) обновляет мои модели и 2) мой DbContext. Если вам нужны обновления только для DbContext, я использую source-control (git), чтобы отменить изменения в моделях; сохраняйте изменения в DbContext.
dotnet ef dbcontext scaffold "{connection}" Microsoft.EntityFrameworkCore.SqlServer \
-f --output-dir=Models
Powershell
More info here, сокращенная команда:
SYNTAX
Scaffold-DbContext [-Connection] <String> [-Provider] <String> [-OutputDir <String>] [-Context <String>] [-Schemas <String[]>] [-Tables <String[]>] [-DataAnnotations] [-Force] [-Environment <String>] [-Project <String>] [-StartupProject <String>]
[<CommonParameters>]
PARAMETERS
-Connection <String>
The connection string to the database.
-Provider <String>
The provider to use. (E.g. Microsoft.EntityFrameworkCore.SqlServer)
-OutputDir <String>
The directory to put files in. Paths are relaive to the project directory.
-Context <String>
The name of the DbContext to generate.
....
-Force [<SwitchParameter>]
Overwrite existing files.
- 1. Как обновить BindingSource на основе модифицированного DataContext
- 2. Как обновить интерфейс WPF в качестве изменений базы данных
- 3. Обновить кеш на основе обновления базы данных
- 4. Как обновить datacontext на странице
- 5. Как правильно обновить модель Entity после изменений структуры базы данных?
- 6. Обновить форму на основе изменений BlockingCollection
- 7. Репликация изменений базы данных
- 8. Как обновить удаленную структуру базы данных с помощью локальных изменений?
- 9. Сохранение только нескольких изменений в структуре данных
- 10. Стратегия базы данных для синхронизации на основе изменений
- 11. Как обновить таблицу базы данных на основе флажка/непроверенной
- 12. Обновление DataContext с новейшими значениями базы данных
- 13. История изменений базы данных
- 14. Как обновить ListBoxItem [с DataContext]
- 15. Ошибка базы данных базы данных изменений
- 16. Liquibase - обновить файл изменений из-за изменений в базе данных
- 17. Управление Развертывание изменений базы данных в Magento
- 18. Брус базы данных изменений
- 19. Откат изменений базы данных
- 20. Мониторинг изменений базы данных SQL
- 21. Обновить столбец сортировки базы данных на основе списка значений массива
- 22. Как отобразить древовидное представление на основе данных данных базы данных?
- 23. Справка по структуре базы данных
- 24. Руководство по структуре базы данных
- 25. Обновить строку базы данных на основе одного ключа?
- 26. Вопрос о структуре базы данных
- 27. Отправить несколько изменений в Datacontext Entity Framework
- 28. Sqlalchemy - обновить столбец на основе изменений в другом столбце
- 29. пункт Заменяет в структуре базы данных
- 30. Два ключа на основе базы данных на основе BST
@Niklas хорошо это своего рода приятно слышать, что другой человек имеет подобную проблему, но затем с 'Entity Framework'. Но принятое решение более или менее то, что я делаю. Но это немного громоздко, когда несколько таблиц изменились, и вы не знаете, какие из них. Вы в конечном итоге удаляете и добавляете все из них каждый раз. Я полагаю, должен быть лучший способ? – Bazzz
Возможный дубликат [Как обновить файл Linq to SQL dbml?] (Http://stackoverflow.com/questions/1110171/how-to-update-linq-to-sql-dbml-file) – MattDavey
@MattDavey действительно выглядит как дубликат. Мне просто не удалось сформулировать мой заголовок, чтобы ваша статья появилась в качестве предложения при формулировании моего вопроса. Не стесняйтесь голосовать за закрытие. – Bazzz