Silverlight 4 RIA服务问题

Silverlight 4 RIA服务问题,silverlight,Silverlight,您好,我已经按照教程在Silverlight中创建了一个示例数据库应用程序。我试图在数据库中插入一条记录,但它抛出了一个错误提交操作未通过验证。有关详细信息,请检查EntitiesInError中每个实体的Entity.ValidationErrors。我正在为DAL使用实体框架。我的代码如下。插入记录时发生异常。但我不确定异常发生在哪个阶段。 RecordInsertPage.cs文件 public partial class BookRegistaeration : ChildWindow

您好,我已经按照教程在Silverlight中创建了一个示例数据库应用程序。我试图在数据库中插入一条记录,但它抛出了一个错误提交操作未通过验证。有关详细信息,请检查EntitiesInError中每个实体的Entity.ValidationErrors。我正在为DAL使用实体框架。我的代码如下。插入记录时发生异常。但我不确定异常发生在哪个阶段。 RecordInsertPage.cs文件

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=您的类对象