2015-09-24 6 views
-1

Я работаю над интрасети и имею длинную модель, которая была создана EntityFramework для моей базы данных Employee, я хотел разделить с ней пароль, и поскольку это частичный класс, я решил, что создаю это:Частичный класс не работает

namespace CRAWebSiteMVC.Models 
{ 
    public partial class Employee 
    { 
     public global::System.String Password 
     { 
      get 
      { 
       return _Password; 
      } 
      set 
      { 
       OnPasswordChanging(value); 
       ReportPropertyChanging("Password");      
       ReportPropertyChanged("Password"); 
       OnPasswordChanged(); 
      } 
     } 
     private global::System.String _Password; 
     partial void OnPasswordChanging(global::System.String value); 
     partial void OnPasswordChanged(); 

    } 

} 

Но теперь, когда я пытаюсь назначить значение для пароля, оно всегда имеет нулевое значение.

например:

[HttpPost] 
    public ActionResult Create([Bind(Exclude = "Id")] Employee objEmployee, FormCollection form) 
    { 
     ViewBag.CompanyList = _service.ListCompany(); 
     ViewBag.SupervisorList = _service.ListSupervisor(); 

     objEmployee.CreatedDate = System.DateTime.Now; // They will get the good value 
     objEmployee.UpdatedDate = System.DateTime.Now; 

     objEmployee.Password = form["Password"]; // will always be = to null, even when the form is filled 
    } 

Что может быть причиной этого?

EDIT: Пароль теперь имеет значение, спасибо всем.

Но теперь следующая встретилась ошибка:

An error occurred while updating the entries. See the inner exception for details. 

На данный момент:

public Employee Create(Employee objEmployee) 
    { 
     _entities.AddToEmployees(objEmployee); 
     _entities.SaveChanges(); // Fails here 
     return objEmployee; 
    } 

Как может SaveChange строя, как это?

+0

при отладке которых один имеет нулевое значение, это 'форма [ "пароль"]'? –

+0

Нет, форма ["Пароль"] улавливает пароль, но objEmployee.Password имеет значение NULL. – Christopher

+1

Тогда это установщик вашего свойства Password, который его не удерживает, поскольку @kenam упоминается в его ответе :) –

ответ

2

Из приведенного выше примера я не вижу, где находится поле _Password. Если ни один из методов OnPasswordChanging, ReportPropertyChanging, ReportPropertyChanged или OnPasswordChanged не делает этого - тогда установите _Password = value.

т.е.

set 
     { 
      OnPasswordChanging(value); 
      ReportPropertyChanging("Password"); 
      _Password = value; 
      ReportPropertyChanged("Password"); 
      OnPasswordChanged(); 
     } 
+1

Вы действительно должны говорить это как утверждение, а не вопрос, чтобы было ясно, что вы предоставляете ответ и не задаете уточняющий вопрос. – Servy

+0

Сообщение теперь изменено - приветствия! – kenam

Смежные вопросы