Я занимаюсь разработкой довольно простого приложения на 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