The property could not be mapped because it is of type 'object', which is not a supported primitive type or a valid entity type
Я пытался изменить Базу Данных в MS SQL Server, работая над проектом, с помощью EntityFramework. Однако, при изменении таблицы, и добавления поля строки "Email" вся система рухнула с exception которая не имеет смысла.
Я пытался легкие изменения, потому что не имел идей, но оно не имело эфекта:
Exception:
System.Exception: "Couldn't retrieve entities: The property 'Users.Email' could not be mapped because it is of type 'object', which is not a supported primitive type or a valid entity type. Either explicitly map this property, or ignore it using the '[NotMapped]' attribute or by using 'EntityTypeBuilder.Ignore' in 'OnModelCreating'."
Вот DBContext:
namespace PlanetariumModelsFramework
{
public class PlanetariumServiceContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
Database.SetInitializer<PlanetariumServiceContext>(null);
base.OnModelCreating(modelBuilder);
}
public DbSet<Performance> Performances { get; set; }
public DbSet<Poster> Posters { get; set; }
public DbSet<Ticket> Tickets { get; set; }
public DbSet<Orders> Orders { get; set; }
public DbSet<Tier> Tiers { get; set; }
public DbSet<Hall> Halls { get; set; }
public DbSet<Users> Users { get; set; }
}
}
Модель Users class:
namespace PlanetariumModelsFramework
{
public class Users
{
public int Id { get; set; }
public string Username { get; set; } = string.Empty;
public string Email { get; set; } = string.Empty;
public string UserPassword { get; set; } = string.Empty;
public string UserRole { get; set; } = string.Empty;
}
Repository class, где сама ошибка и появляется:
namespace PlanetariumRepositories
{
public class Repository<TEntity> : IRepository<TEntity> where TEntity : class
{
protected readonly PlanetariumServiceContext RepositoryPlanetarium;
public Repository(PlanetariumServiceContext repositoryPatternDemoContext)
{
RepositoryPlanetarium = repositoryPatternDemoContext;
}
public IQueryable<TEntity> GetAll()
{
try
{
return RepositoryPlanetarium.Set<TEntity>();
}
catch (Exception ex)
{
throw new Exception($"Couldn't retrieve entities: {ex.Message}");
}
}
public async Task<TEntity> AddAsync(TEntity entity)
{
if (entity == null)
{
throw new ArgumentNullException($"{nameof(AddAsync)} entity must not be null");
}
try
{
await RepositoryPlanetarium.AddAsync(entity);
await RepositoryPlanetarium.SaveChangesAsync();
return entity;
}
catch (Exception ex)
{
throw new Exception($"{nameof(entity)} could not be saved: {ex.Message}");
}
}
public async Task<TEntity> UpdateAsync(TEntity entity)
{
if (entity == null)
{
throw new ArgumentNullException($"{nameof(AddAsync)} entity must not be null");
}
try
{
RepositoryPlanetarium.Update(entity);
object p = await RepositoryPlanetarium.SaveChangesAsync();
return entity;
}
catch (Exception ex)
{
throw new Exception($"{nameof(entity)} could not be updated: {ex.Message}");
}
}
public async Task<TEntity> DeleteAsync(TEntity entity)
{
if (entity == null)
{
throw new ArgumentNullException($"{nameof(AddAsync)} entity must not be null");
}
try
{
RepositoryPlanetarium.Remove(entity);
object p = await RepositoryPlanetarium.SaveChangesAsync();
return entity;
}
catch (Exception ex)
{
throw new Exception($"{nameof(entity)} could not be deleted: {ex.Message}");
}
}
}
}
UsersRepository class, который наследует его (Дополнительно):
using PlanetariumModels;
namespace PlanetariumRepositories
{
public class UsersRepository : Repository<Users>, IUsersRepository
{
public UsersRepository(PlanetariumServiceContext repositoryPatternDemoContext) : base(repositoryPatternDemoContext)
{
}
public Task<Users> GetByUsernameAsync(string username)
{
return base.GetAll().FirstOrDefaultAsync(x => x.Username == username);
}
public Task<Users> GetByEmailAsync(string email)
{
return base.GetAll().FirstOrDefaultAsync(x => x.Email == email);
}
public new List<Users> GetAll()
{
return base.GetAll().ToList<Users>();
}
}
}