我正在尝试将我的存储库更新为EF5,但遇到了一些错误。我已经看了一下stackoverflow的类似错误,发现了一些问题/答案,但不幸的是,相同的答案并没有解决我的问题。
这是我的错误:
The entity type User is not part of the model for the current context.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
这是我的DbContext类:
public abstract class WebModelContext : DbContext
{
public WebModelContext()
: base("WebConnection")
{
Configuration.LazyLoadingEnabled = true;
}
}
这是继承我的WebModelContext
类的上下文类:
public class AccountContext : WebModelContext
{
private DbSet<User> _users;
public AccountContext()
: base()
{
_users = Set<User>();
}
public DbSet<User> Users
{
get { return _users; }
}
}
这是我的存储库类:
public abstract class IRepository<T> : IDisposable where T : WebModelContext, new()
{
private T _context;
protected T Context
{
get { return _context; }
}
public IRepository() {
_context = new T();
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
~IRepository()
{
Dispose(false);
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
if (_context != null)
{
_context.Dispose();
_context = null;
}
}
}
}
这是我的AccountRepository类:
public class AccountRepository : IRepository<AccountContext>
{
public List<User> GetUsers()
{
return Context.Users.ToList();
}
public User GetUser(string username)
{
return Context.Users.Where(u => u.Name == username).FirstOrDefault();
}
public User CreateUser(string username, string password, string salt, int age, int residence)
{
User user = new User
{
Name = username,
Password = password,
Salt = salt,
RoleId = 1,
CreatedOn = DateTime.Now,
Locked = false,
Muted = false,
Banned = false,
Guid = Guid.NewGuid().ToString("N")
};
Context.Users.Add(user);
return Context.SaveChanges() > 0 ? user : null;
}
}
任何帮助都非常感谢:)
答案 0 :(得分:6)
EF可能无法获取您声明的实体类型。覆盖OnModelCreating
并将User
实体添加到模型中。
public class AccountContext : WebModelContext
{
private DbSet<User> _users;
public AccountContext()
: base()
{
_users = Set<User>();
}
public DbSet<User> Users
{
get { return _users; }
}
protected virtual void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>();
}
}
答案 1 :(得分:3)
我遇到了与EF 5相同的问题......我所做的就是删除tt文件创建的所有文件,然后重新创建它们......每件事情都重新开始了!
答案 2 :(得分:0)
您的表型号名称错误。在Sql server中使用sates时设置正确的名称。 return View(db.tblEmployees.ToList()); 错误行.....
go Model and duble点击你的模型名称而不是像表名一样匹配(tblEmployees)
您的错误已解决