问题描述
代码:publicclassBaseRepository<T>:InterfaceBaseRepository<T>whereT:class{//数据访问接口protectedNineskyDbContextnContext=ContextFactory.GetCurrentContext();publicTAdd(Tentity){nContext.Entry<T>(entity).State=System.Data.Entity.EntityState.Added;nContext.SaveChanges();returnentity;}publicintCount(Expression<Func<T,bool>>predicate){returnnContext.Set<T>().Count(predicate);}继承基类publicclassUserRepository:BaseRepository<User>,InterfaceUserRepository{}定义工厂publicstaticclassRepositoryFactory{publicstaticInterfaceUserRepositoryUserRepository{get{returnnewUserRepository();}}}创建模型publicclassNineskyDbContext:DbContext{publicDbSet<User>Users{get;set;}publicDbSet<Role>roles{get;set;}publicDbSet<UserConfig>userConfigs{get;set;}publicDbSet<UserRepository>userRepositorys{get;set;}publicNineskyDbContext():base("DefaultConnection"){Database.CreateIfNotExists();}}提cuowu:模型生成过程中检测到一个或多个验证错误:DAL.UserRepository::EntityType“UserRepository”未定义键。请为该EntityType定义键。userRepositorys:EntityType:EntitySet“userRepositorys”基于未定义任何键的类型“UserRepository”。说明:执行当前Web请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息:System.Data.Entity.ModelConfiguration.ModelValidationException:模型生成过程中检测到一个或多个验证错误:DAL.UserRepository::EntityType“UserRepository”未定义键。请为该EntityType定义键。userRepositorys:EntityType:EntitySet“userRepositorys”基于未定义任何键的类型“UserRepository”。
解决方案
解决方案二:
数据库字段与实体类模型字段不一致?
解决方案三:
这个我在codefirst中遇到过。仔细查看你的关联表,我是有一个外键引用了该表,但是后来数据库删除了主外键关系,而codefirst没有改。所以导致的这个问题。
解决方案四:
您好你的问题现在解决了吗
解决方案五:
引用System.ComponentModel.DataAnnotations命名空间在UserRepository类中找到对应数据库中主键的属性,在头部声明[key]问题解决!