Работы в MVC3, C#Расширение класса с частичным классом
Я задаюсь вопрос о «иерархии» образцовая, класс таблицы БД и частичном классе.
В дб у меня есть таблица учетная_запись_пользователя структурирована:
UserAccount: UserId, ПгвЬЫате, LastName, логин, пароль, адрес электронной почты
В моем проекте у меня есть модель под названием UserModel. Я использую его, чтобы украсить свойства данными. она устанавливается как тип метаданных для класса UserAccount, например, так:
[MetadataType(typeof(UserModel))]
public partial class useraccount
{
}
public class UserModel
{
public int UserId { get; set; }
[Display(Name="First Name")]
[StringLength(20)]
[Required]
public string FirstName { get; set; }
[Display(Name = "Last Name")]
[StringLength(30)]
[Required]
public string LastName { get; set; }
[Display(Name = "Email Address")]
[StringLength(20)]
[Required]
public string email { get; set; }
[Remote("IsUserNameAvailable", "Validation")]
[Display(Name = "Choose a Login Name")]
[StringLength(40)]
[Required]
public string login { get; set; }
[Display(Name = "Choose a Password")]
[StringLength(64)]
[Required]
public string password { get; set; }
[Display(Name = "Enter Password Again")]
[StringLength(64)]
[Required]
public string confirmPassword { get; set; }
}
Уведомление в таблице базы данных есть столбец «Пароль», но нет «confirmPassword», однако в UserModel, нет.
Мое мышление - это класс UserAccount, использующий класс UserModel для метаданных, теперь должен содержать определение для «confirmPassword».
Вот проблема, которую я испытываю. По мнению регистра, я использую UserModel как модель, так что в верхней части страницы, у меня есть:
@model OurAgreements.Models.UserModel
проблема возникает в контроллере, когда я пытаюсь сохранить. Этот код:
public ActionResult Register(UserModel model)
{
var repo = new Repository();
if (ModelState.IsValid)
{
using (var db = new ouragreementEntities())
{
db.useraccount.Add(model);
db.SaveChanges();
}
return View();
}
дает ошибку, не может преобразовать UserModel в useraccount. Я могу понять это, я пытаюсь помещать данные в таблицу, которая не соответствует всем столбцам.
Итак, я понял, я хотел бы изменить модель на целях:
@model OurAgreements.Models.useraccount
, потому что в моем мышлении, класс учетная_запись_пользователя не должен использовать UserModel, но делать это дает ошибку «учетная_запись_пользователь не имеет определение для 'confirmPassword'
Так что я немного застрял. Я знаю, что могу вернуться к использованию UserModel в качестве модели, а затем в контроллере я могу создать новый экземпляр useraccount и заполнить его данными из модели, а затем сохранить экземпляр в базу данных.
Так что, наверное, мой вопрос, почему пользовательский учет не содержит определения для подтверждения пароля?