NHibernate на Добавить вопрос/обновления после добавления нового столбца на ASP.NET в MVC
Пожалуйста, помогите мне с нижеприведенным вопросом.
Я добавил новый столбец в существующую таблицу и перестроил код, и он отлично работает при чтении записи.
public TEntity Get(int id) { Session.CacheMode = CacheMode.Normal; var entity = Session.Get<TEntity>(id); return entity; }
При сохранении изменений я получаю следующее исключение
public bool Update(TEntity entity) { Session.Transaction.Begin(); Session.SaveOrUpdate(entity); Session.Flush(); Session.Transaction.Commit(); (Exception at this line) return true; }
Exception Details: Message: could not execute batch command.[SQL: SQL not available] Inner Exception: {"Invalid column name 'UseTerms'."} Stack Trace: at NHibernate.Engine.ActionQueue.BeforeTransactionCompletionProcessQueue.BeforeTransactionCompletion() at NHibernate.Impl.SessionImpl.BeforeTransactionCompletion(ITransaction tx) at NHibernate.Transaction.AdoTransaction.Commit() at WebApp.Core.Data.NHibernateData.Repositories.NHibernateRepository`1.Update(TEntity entity) in D:\WebApp\Core\WebApp.Core.Data.NHibernateData\Repositories\NHibernateRepository.cs:line 55 at WebApp.Core.Logic.Configuration.GroupConfigurationLogic.SaveGroupConig[TEntity,TDto](Int32 groupId, IRepository`1 repository, TDto dto) in D:\WebApp\Core\WebApp.Core.Logic\Configuration\GroupConfigurationLogic.cs:line 63 at WebApp.Core.Logic.Configuration.ConfigurationService.SaveGroupConfiguration(GroupConfigurationDto groupConfiguration, Guid updatedBy) in D:\WebApp\Core\WebApp.Core.Logic\Configuration\ConfigurationService.cs:line 91 at WebApp.Core.Wcf.ConfigurationService.SaveGroupConfiguration(GroupConfigurationDto groupConfiguration, Guid updatedBy) in D:\WebApp\Core\WebApp.Core.Wcf\ConfigurationService.svc.cs:line 24 at SyncInvokeSaveGroupConfiguration(Object , Object[] , Object[] ) at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs) at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
Что я уже пробовал:
Я попробовал 2 способа создать новый столбец
1) Откройте конструктор и создайте новый столбец в Sql (что приводит к тому же исключению)
2) используя метод FluentMigrator Up, я создал новый столбец (столбец создается и после перекомпиляции и выполнения приложения - получается то же самое исключение)
using FluentMigrator; namespace WebApp.Core.Migrations.Release7_21 { [Migration(202006082020, "AchConfiguration Migration")] public class AchConfigurationMigration : Migration { public override void Up() { Create.Column("UseTerms").OnTable("AchConfiguration").InSchema("config") .AsBoolean().NotNullable().WithDefaultValue(1); } public override void Down() { } } }
Richard Deeming
Сообщение об ошибке, по-видимому, предполагает, что новый столбец не существует в базе данных, с которой разговаривает ваш код.
Pawan Kiran
У него есть столбец в таблице базы данных, и я смог прочитать значения (я добавил новый столбец с битовым флагом по умолчанию как 1, поэтому все мои существующие записи обновляются с 1)
Теперь, когда я пытаюсь отредактировать запись с внешнего интерфейса, она выдает мне ошибку, как описано в вопросе.