Проблема с сервисом Silverlight 4 RIA

#silverlight

#серебристый свет #silverlight

Вопрос:

Привет, я создал пример приложения базы данных в Silverlight, следуя руководству. Я пытаюсь вставить запись в базу данных, но она выдает ошибку Операция отправки не прошла проверку. Пожалуйста, проверьте объект.Ошибки проверки для каждого объекта в EntitiesInError для получения дополнительной информации. Я использую Entity Framework для 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();
        }
    }
  

Ответ №1:

Попробуйте поступить так, как предлагается в сообщении об исключении, установите точку останова в вашем событии SubmittedChanges, чтобы проверить этот объект исключения, для которого вы должны иметь возможность видеть сущность.Ошибки проверки для каждого объекта в EntitiesInError.

Это должно сообщить вам, какое из полей в объекте, который вы пытаетесь добавить, не прошло проверку проверки, у вас могут быть нулевые данные в полях, которые не могут быть нулевыми. Вы можете обнаружить, что строковые свойства не могут быть пустыми.

Попробуйте также убедиться, что ваша форма правильно заполняет объект, который вы будете добавлять, вы могли бы установить точку останова перед вызовом CommitEdit и проверить состояние объекта.

Ответ №2:

я не понимаю этой строчки !

AddBookForm.CurrentItem =AddBookForm;

почему вы это написали?

это должно быть что-то вроде этого

AddBookForm.CurrentItem = объект вашего класса!