Я использую Entity Framework в первый раз (сначала база данных, инфраструктура сущности 5) в приложении форм Windows (vs2010, .net 4). У меня возникли проблемы со связыванием между объектом объекта и элементами форм Windows. У меня есть элементы управления textbox, datetimepicker и combobox. Когда я открываю окно со связанными элементами управления, в элементах управления отображаются правильные данные. Однако, когда я изменяю значение в одном из своих элементов управления и выхожу из элемента управления, значение возвращается к исходному значению в элементе управления, как если бы значение не попадало на объект. Вот код их фрагменты:Объект привязки объекта привязки к объекту 5 с контролем окон
Моя сущность объект:
namespace Entities
{
using System;
using System.Collections.Generic;
public partial class ExternalDocument
{
public int ExternalDocumentID { get; set; }
public bool Active { get; set; }
public bool Closed { get; set; }
public Nullable<int> CompanyID { get; set; }
public Nullable<int> ContactID { get; set; }
public string DocumentNbr { get; set; }
public Nullable<System.DateTime> DocumentDate { get; set; }
public Nullable<System.DateTime> DateReceived { get; set; }
public virtual Company Company { get; set; }
public virtual Contact Contact { get; set; }
}
}
связывание данные:
private void SetDataBindings()
{
LoadComboBoxValues();
this.textDocumentNbr.DataBindings.Add("Text", this.document, "DocumentNbr");
this.textDocumentNbr.Leave += new EventHandler(textDocumentNbr_Leave);
this.dateDocument.DataBindings.Add(new Binding("Value", this.document, "DocumentDate"));
this.dateReceived.DataBindings.Add("Value", this.document, "DateReceived");
this.comboCompanyID.DataBindings.Add("SelectedValue", document, "CompanyID");
}
Я задавался вопрос, есть ли рамки сущности ошибка, когда свойство объекта является но я не смог найти хороший способ поймать любые подобные ошибки. У моего объекта фреймворка объекта нет метода < PropertyName> Изменение, созданного для более ранних версий инфраструктуры сущностей. Я пытался перехвата ошибок, когда фокус покидает элемент управления, но думаю, что это не может быть лучшим способом:
private void dateDocument_Leave(object sender, EventArgs e)
{
string errorString = this.entitiesController.GetValidationErrors();
this.errorDocumentDate.SetError(this.dateDocument, errorString);
}
public string GetValidationErrors()
{
string errorString = "";
List<DbEntityValidationResult> errorList = (List<DbEntityValidationResult>)this.finesse2Context.GetValidationErrors();
if (errorList.Count > 0)
{
foreach(var eve in errorList)
{
errorString += "Entity of type " + eve.Entry.Entity.GetType().Name + " in state" + eve.Entry.State + " has the following validation errors:"; ;
foreach (var ve in eve.ValidationErrors)
{
errorString += "- Property: " + ve.PropertyName + " Error: " + ve.ErrorMessage;
}
}
}
return errorString;
}
Любая помощь будет оценена. Благодаря!