Во-первых, вы не хотите использовать Invoke в вашем сервисном методе. Вы просто хотите операцию вставки. Итак, ваш метод должен выглядеть следующим образом:
public void InsertPersonnel(PersonnellDTO personnelDTO)
Нет необходимости в атрибуте [Insert], так как RIA автоматически сгенерирует его по соглашению с именами метода.
Следующее препятствие, с которым вам придется столкнуться, это то, как RIA обрабатывает ключи. Он использует ключи для определения отслеживания изменений. По DEFAULT - RIA отправит пустые объекты на сервисный уровень, если считает, что отправляемый вами объект НЕ НОВЫЙ. Это позволяет сэкономить трафик.
Вы оборачиваете свои объекты в DTO; По моему опыту, RIA не очень хорошо себя ведет в этом сценарии. Что он действительно ожидает, так это объект Personnel с объектом PersonnelInfo в качестве дочернего элемента и PersonnelId в качестве ключа. Затем вам нужно настроить ассоциации с IsForeignKey = true, чтобы ключи обновлялись правильно.
Я опубликую пример сложного корневого агрегатного объекта, который я использую в образце приложения, о котором я собираюсь вскоре написать в блоге (мы используем RIA с POCO и Oracle, и это работает; но это потребовало некоторого понимания из).
[MetadataType(typeof (TicketMetadata))]
public partial class Ticket
{
internal sealed class TicketMetadata
{
[Key] public int TicketId;
[Required]
public DateTime IncidentDate;
[Required(ErrorMessage = "Missing Customer")]
public int CustomerId;
[Required(ErrorMessage = "Missing Product")]
public int ProductId;
[Include]
[Association("Ticket_Customer", "CustomerId", "CustomerId", IsForeignKey = true)]
public Customer Customer;
[Include]
[Association("Ticket_Product", "ProductId", "ProductId", IsForeignKey = true)]
public Product Product;
[Include]
[Composition]
[Association("Ticket_TicketActions", "TicketId", "TicketId")]
public List<TicketAction> TicketActions;
}
}
Я бы рекомендовал посмотреть, как работают Ассоциация и внешние ключи, переосмыслить структуру вашего объекта и, возможно, отойти от DTO. Сделано правильно, все работает довольно хорошо.