Silverlight 4 RIA服务问题
您好,我已经按照教程在Silverlight中创建了一个示例数据库应用程序。我试图在数据库中插入一条记录,但它抛出了一个错误提交操作未通过验证。有关详细信息,请检查EntitiesInError中每个实体的Entity.ValidationErrors。我正在为DAL使用实体框架。我的代码如下。插入记录时发生异常。但我不确定异常发生在哪个阶段。 RecordInsertPage.cs文件Silverlight 4 RIA服务问题,silverlight,Silverlight,您好,我已经按照教程在Silverlight中创建了一个示例数据库应用程序。我试图在数据库中插入一条记录,但它抛出了一个错误提交操作未通过验证。有关详细信息,请检查EntitiesInError中每个实体的Entity.ValidationErrors。我正在为DAL使用实体框架。我的代码如下。插入记录时发生异常。但我不确定异常发生在哪个阶段。 RecordInsertPage.cs文件 public partial class BookRegistaeration : ChildWindow
public partial class BookRegistaeration : ChildWindow
{
public Book newBook { get; set; }
public BookRegistaeration()
{
InitializeComponent();
newBook = new Book();
AddBookForm.CurrentItem =AddBookForm;
AddBookForm.BeginEdit();
}
private void OKButton_Click(object sender, RoutedEventArgs e)
{
AddBookForm.CommitEdit();
this.DialogResult = true;
}
private void CancelButton_Click(object sender, RoutedEventArgs e)
{
newBook = null;
AddBookForm.CancelEdit();
this.DialogResult = false;
}
}
Service.cs页面
public class OrganizationService : LinqToEntitiesDomainService<LibraryEntities1>
{
public IQueryable<Book> GetBooks()
{
return this.ObjectContext.Books.OrderBy(e => e.BookId);
}
public void InsertBook(Book book)
{
//book.Title = "Hello book";
//book.Author = "Ali";
//book.Category = "Humanity";
if ((book.EntityState != EntityState.Detached))
{
this.ObjectContext.ObjectStateManager.ChangeObjectState(book, EntityState.Added);
}
else
{
this.ObjectContext.Books.AddObject(book);
}
}
public void UpdateBook(Book currentBook)
{
this.ObjectContext.Books.AttachAsModified(currentBook, this.ChangeSet.GetOriginal(currentBook));
}
public void DeleteBook(Book book)
{
if ((book.EntityState != EntityState.Detached))
{
this.ObjectContext.ObjectStateManager.ChangeObjectState(book, EntityState.Deleted);
}
else
{
this.ObjectContext.Books.Attach(book);
this.ObjectContext.Books.DeleteObject(book);
}
}
}
private void LibraryDataSource_SubmittedChanges(object sender, SubmittedChangesEventArgs e)
{
if (e.HasError)
{
MessageBox.Show(string.Format("Changes were not saved: {0}", e.Error.Message));
e.MarkErrorAsHandled();
}
submitButton.IsEnabled = true;
}
void addBook_Closed(object sender, EventArgs e)
{
BookRegistaeration book = (BookRegistaeration)sender;
if (book.newBook != null)
{
OrganizationContext _OrganizationContext = (OrganizationContext)(LibraryDataSource.DomainContext);
_OrganizationContext.Books.Add(book.newBook);
LibraryDataSource.SubmitChanges();
}
}
尝试按照异常消息的建议执行操作,在SubmittedChanges事件上放置一个断点,以检查异常对象,您应该能够看到EntityInError中每个实体的Entity.ValidationErrors 这将告诉您尝试添加的对象中的哪些字段未通过验证检查,您可能在不能为null的字段中有null数据。您可能会发现字符串属性不允许为空
还要确保表单正确填充了要添加的对象,您可以在CommittedIt调用之前放置一个断点并检查对象状态。我不理解这一行 AddBookForm.CurrentItem=AddBookForm 你为什么写这个 应该是这样的 AddBookForm.CurrentItem=您的类对象