Тип сущности <Entity>не является частью модели для текущего контекста - PullRequest
0 голосов
/ 19 мая 2019

Я занимаюсь разработкой довольно простого приложения на C # с использованием Data First Entity Framework Model.Все шло хорошо, пока я не добавил пятую таблицу в свою базу данных и не обновил свою модель из базы данных.Наверх Я все еще могу добавлять, удалять данные обновления во всех других таблицах в моей базе данных, но по какой-то причине я продолжаю сталкиваться с этой проблемой с последней таблицей, которую я добавил в свою базу данных.Я использую Entity Framework 6x

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

  • Изменение строки подключения на строку подключения ADO.NET
  • Удаление объекта и обновление моей модели EDMX из базы данных.
  • Подключение объекта к таблице в void OnModelCreating (DbModelBuilder modelBuilder) функцииcontext.cs
  • Соответствие строк подключения в APP.config и Web.config.

Кажется, что до сих пор ничего не работало.

//Monies.Context.cs
namespace MoneyManager.DB
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;

    public partial class MoniesEntities : DbContext
    {
        public MoniesEntities()
            : base("name=MoniesEntities")
        {
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }

        public virtual DbSet<Country> Countries { get; set; }
        public virtual DbSet<Vendor> Vendors { get; set; }
        public virtual DbSet<Category> Categories { get; set; }
        public virtual DbSet<SubCategory> SubCategories { get; set; }
        public virtual DbSet<User> Users { get; set; }
        public virtual DbSet<Expense> Expenses { get; set; }
    }
}
//Expense.cs
namespace MoneyManager.DB
{
    using System;
    using System.Collections.Generic;

    public partial class Expense
    {
        public System.Guid ExpenseId { get; set; }
        public System.Guid VendorId { get; set; }
        public System.Guid UserId { get; set; }
        public System.Guid CategoryId { get; set; }
        public System.Guid SubCategoryId { get; set; }
        public MoneyManager.DTO.Enums.PaymentMode PaymentMode { get; set; }
        public int PaymentMethod { get; set; }
        public string PaymentDetail { get; set; }
        public string Comment { get; set; }
        public decimal Amount { get; set; }
        public System.DateTime ExpenseDate { get; set; }
    }
}

//ExpenseRepository.cs
namespace MoneyManager.DB
{
    public class ExpenseRepository
    {

        public static void SaveExpense(DTO.Expense dtoExpense)
        {
            MoniesEntities db = new MoniesEntities();

            MoneyManager.DB.Expense expense = new MoneyManager.DB.Expense();

            expense.Amount = dtoExpense.Amount;
            expense.CategoryId = dtoExpense.CategoryId;
            expense.Comment = dtoExpense.Comment;
            expense.ExpenseDate = dtoExpense.ExpenseDate;
            expense.ExpenseId = dtoExpense.ExpenseId;
            expense.PaymentDetail = dtoExpense.PaymentDetail;
            expense.PaymentMethod = dtoExpense.PaymentMethod;
            expense.PaymentMode = dtoExpense.PaymentMode;
            expense.SubCategoryId = dtoExpense.SubCategoryId;
            expense.UserId = dtoExpense.UserId;
            expense.VendorId = dtoExpense.VendorId;


            db.Expenses.Add(expense);  //This is where I get this error
            db.SaveChanges();
        }
    }
}

//Строка соединения

Вот трассировка стека

InvalidOperationException: Тип сущности Expense не является частью модели для текущего контекста.
Система.Data.Entity.Internal.InternalContext.UpdateEntitySetMappingsForType (Type entityType) + 209
System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType (Типe entityType) + 51
System.Data.Entity.Internal.Linq.InternalSet 1.Initialize() +137<br> System.Data.Entity.Internal.Linq.InternalSet 1.get_InternalContext () +38 System.Data.Entity.Internal.Linq.InternalSet 1.ActOnSet(Action action, EntityState newState, Object entity, String methodName) +236<br> System.Data.Entity.Internal.Linq.InternalSet 1.Add (Object entity)+200 System.Data.Entity.DbSet`1.Add (сущность TEntity) + 130
MoneyManager.DB.ExpenseRepository.SaveExpense (Expense dtoExpense) в c: \ MoneyManager \ MoneyManager.DB \ ExpenseRepository.cs: 31
MoneyManager.\ ExpenseNew.aspx.cs: 93
System.Web.UI.WebControls.Button.OnClick (EventArgs e) + 9782698

1 Ответ

0 голосов
/ 19 мая 2019

Поместите это в свой класс OnModelCreating of MoniesEntities:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Expense>().ToTable("Expenses");
}
...