Как исправить "entitytype httppostedfilebase не имеет определенного ключа. Определите ключ для этой ошибки entitytype" в asp. Net MVC
Добрый день кодовые гуру, любезно помогите в разрешении этой ошибки :
EntityType 'HttpPostedFileBase' has no key defined. Define the key for this EntityType.
Я искал в Интернете решение, но все рекомендуемые исправления не решают эту ошибку. Вот предыстория моей проблемы, я недавно изменил свою модель данных сущностей с "EF Designer из базы данных (EDMX)" к "Сначала код из базы данных", причиной изменения стала ошибка, которую я получал при попытке разместить систему. Система не могла подключиться к серверу базы данных. Команда хостинга рекомендовала это изменение. Теперь я создал новый проект и скопировал код из старой системы. Когда я запускаю систему, я продолжаю получать эту ошибку «EntityType: EntitySet 'HttpPostedFileBases' основан на типе 'HttpPostedFileBase', для которого не определены ключи». см. ссылку журнала ошибок. Я также загрузил этот проект в свой Google drive, если вы хотите взглянуть на код, а затем загрузите его по приведенной ниже ссылке. Я был бы очень признателен за обратную связь от вас, ребята, спасибо, что нашли время из своего плотного графика, чтобы помочь.
Ошибочный Код
public tblLogin Search(string userEmail, string userPassword) { try { userPassword = HelperFunction.PasswordEncrypt(userPassword, ConfigurationManager.AppSettings["Encyptkey"]); return db.tblLogins.Where(user => user.Email.Equals(userEmail) && user.UserPassword.Equals(userPassword)).FirstOrDefault(); the error is thrown here, in fact whenever I try to query the database. } catch (Exception err) { ExceptionLogger.LogException(err, "[Controller: Account] [Action Method: Search(string userEmail, string userPassword)]"); return null; } }
класс моделей
[Table("tblLogin")] public partial class tblLogin { [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] public tblLogin() { tblRecordKeys = new HashSet<tblRecordKey>(); } public int Id { get; set; } [Required] [StringLength(100)] public string Email { get; set; } [Required] [StringLength(100)] public string UserPassword { get; set; } public int RoleID { get; set; } public int StateID { get; set; } public bool Verified { get; set; } public Guid AuthorizationCode { get; set; } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] public virtual ICollection<tblRecordKey> tblRecordKeys { get; set; } public virtual tblState tblState { get; set; } public virtual tblMember tblMember { get; set; } public virtual tblRole tblRole { get; set; } }
Класс Модели Метаданных
[MetadataType(typeof(ModelLogin))] public partial class tblLogin { [Display(Name = "Confirm Password"), System.ComponentModel.DataAnnotations.Compare("UserPassword", ErrorMessage = "Password Confirmation And Password Do Not Match"), Required(ErrorMessage = "Password Confirmation Is Required!")] public string ConfirmPassword { get; set; } } public class ModelLogin { [Key, Column(Order = 0)] public int Id { get; set; } [Required(ErrorMessage = "Email Address Is Required!"), Display(Name = "Email Address")] [RegularExpression(@"[a-zA-Z0-9\-_~]+(\.[a-zA-Z0-9\-_~]+)*@[a-zA-Z0-9\-_~]+(\.[a-zA-Z0-9\-_~]+)*\.[a-zA-Z]{2,}", ErrorMessage = "Invalid Email Address")] public string Email { get; set; } [Display(Name = "Password"), Required(ErrorMessage = "Password Is Required!")] public string UserPassword { get; set; } public int RoleID { get; set; } public bool Verified { get; set; } }
Ссылка На Журнал Ошибок : ErrorLog.txt -Google Диск[^]
Что я уже пробовал:
Я пробовал добавлять
Key Attribute
Аннотации данных к моим моделям, чтобы сообщить EF атрибут первичного ключа, но это не работает.
Kats2512
вы должны опубликовать код для вашего класса модели mvc, а не файлы базы данных, и ожидать, что люди будут знать, что делать или искать.
возможно, если бы это было добавлено, вы могли бы получить лучший ответ на то, в чем именно заключается ваша проблема.
Admire Mhlaba
Спасибо, я так и сделаю.