2016-08-12 5 views
1

Я довольно новичок в Entity Framework и C#, поэтому прошу прощения, если моя способность описать проблему минимальна.Ручные изменения в базе данных Entity Framework приводят к ошибке

У меня есть проект .NET Web Forms, размещенный на Azure, который использует Entity Framework для обработки всех таблиц базы данных. Недавно у меня возникла проблема с отладкой, и я создал тестовые записи, которые я удалил, когда проблема была решена с помощью Microsoft SQL Server Management Studio. К сожалению, сейчас я получаю следующее сообщение об ошибке: «Модель поддержав контекст„RegSysContext“изменились, так как база данных была создана Рассмотрим с помощью Code First Миграции, чтобы обновить базу данных»

Класс RegSysContext можно увидеть ниже.

Из чего я понимаю, это связано с метаданными, которые Entity Framework больше не использует для базы данных. Данные в базе данных необходимы для сохранения, иначе я бы просто уничтожил и забыл об этом.

Как я могу решить эту проблему в размещенном веб-приложении и как я могу редактировать базу данных в будущем, не вызывая этой проблемы?

Заранее благодарен!

public class RegSysContext : DbContext 
{ 
    // Default Constructor for the context class 
    public RegSysContext() : base("RegSys") 
    { 

    } 

    // Properties of the context class 
    public DbSet<CustomerAccountMembership> AccountMembershipRecords { get; set; } 

    // For Organization Account functionality 
    public DbSet<RegSysAccount> RegSysAccounts { get; set; } 
    public DbSet<Subscription> Subscriptions { get; set; } 
    public DbSet<SubscriptionRecord> SubscriptionRecords { get; set; } 
    public DbSet<PaymentInfo> PaymentAccountInfoRecords { get; set; } 

    // For Auction functionality 
    public DbSet<Auction> auctions { get; set; } 
    public DbSet<AuctionItem> auctionItems { get; set; } 
    public DbSet<AuctionLot> auctionLots { get; set; } 
    public DbSet<AuctionDonation> auctionDontations { get; set; } 
    public DbSet<AuctionSale> auctionSales { get; set; } 
    public DbSet<ItemInAuctionRecord> itemInAuctionRecords { get; set; } 

    // For Event functionality 
    public DbSet<Event> events { get; set; } 
    public DbSet<EventParticipant> eventParticipants { get; set; } 
    public DbSet<RegistrationPeriod> registrationPeriods { get; set; } 
    public DbSet<RegType> regTypes { get; set; } 
    public DbSet<RegPrice> regPrices { get; set; } 
    public DbSet<EventCategory> EventCategories { get; set; } 
    //public DbSet<RegistrationConfig> regConfigs { get; set; } 
    //public DbSet<RegFormConfig> regFormConfigs { get; set; } 

    // For Organization functionality 
    public DbSet<Lodge> Lodges { get; set; } 

    // For Participant functionality 
    public DbSet<Participant> Participants { get; set; } 
    public DbSet<Charge> Charges { get; set; } 
    public DbSet<EventParticipantToParticipantLinker> EventParticipantLinks { get; set; } 

    // For System functionality 
    public DbSet<RegSysMessage> RegSysMessages { get; set; } 
    public DbSet<Transaction> Transactions { get; set; } 

    // For Trading Post functionality 
    public DbSet<Category> Categories { get; set; } 
    public DbSet<Product> Products { get; set; } 
    public DbSet<CartItem> ShoppingCartItems { get; set; } 
    public DbSet<ProductInventory> ProductInventories { get; set; } 
    public DbSet<TradingPost> TradingPosts { get; set; } 
    public DbSet<Order> Orders { get; set; } 
    public DbSet<OrderDetail> OrderDetails { get; set; } 
    public DbSet<ProductSale> ProductSales { get; set; } 
    public DbSet<SpecialOffer> SpecialOffers { get; set; } 
} 
+0

Вы пробовали какие-либо решения? Возможно, здесь [здесь] (http://stackoverflow.com/questions/25366807/the-model-backing-the-context-has-changed-since-the-database-was-created) или [здесь] (http: //stackoverflow.com/questions/28747581/entity-framework-telling-me-the-model-backing-the-context-has-changed) –

+0

@MarkC. Я смотрел на [MigrateDatabaseToLatestVersion Initializer] (https://msdn.microsoft.com/en-us/data/jj591621.aspx#initializer), поскольку он выглядел так, как будто он делает то, что мне нужно, хотя я просто пытаюсь понять как использовать его прямо сейчас. –

+0

Кажется, что вы не запустили команду «Обновить-База данных», если вы делаете Code First. Кроме того, включены ли миграции? –

ответ

0

Добавьте эту строку в конструкторе внутри RegSysContext класса:

Database.SetInitializer<RegSysContext>(null); 

Что эта строка кода она говорит Entity Framework или нет, чтобы создать базу данных. Передавая null в параметр IDatabaseInitializer strategy, вы в основном отключите инициализацию базы данных (поскольку она уже существует)

+1

Спасибо, Марк, это исправляет! –

Смежные вопросы