Я создал очень простое решение Silverlight RIA с EF4 на стороне сервера. Я добавил метод Named Update в DomainService, но не могу его использовать. Проблема с ChangeSet.GetOriginal (). Возвращает ноль:
[EnableClientAccess()]
public class StudentsDomainService : LinqToEntitiesDomainService<Model1Container>
{
[Update(UsingCustomMethod = true)]
public void MyMethod(Student stud, int a, int b)
{
stud.FirstName = (a*b).ToString();
var original = this.ChangeSet.GetOriginal(stud);
// original is null;
this.ObjectContext.StudentSet.AttachAsModified(stud, original); //Exception is thrown
}
.
.
.
}
это код xaml:
public partial class MainPage : UserControl
{
StudentsDomainContext ctx;
Student stud;
public MainPage()
{
InitializeComponent();
ctx = new StudentsDomainContext();
}
private void buttonGet_Click(object sender, RoutedEventArgs e)
{
ctx.Load<Student>(ctx.GetStudentSetQuery()).Completed += new EventHandler(MainPage_Completed);
}
void MainPage_Completed(object sender, EventArgs e)
{
var lo = (sender as LoadOperation<Student>);
stud = lo.Entities.First();
}
private void buttonChange_Click(object sender, RoutedEventArgs e)
{
stud.MyMethod(3, 6);
ctx.SubmitChanges();
}
}
Важно отметить, что когда я использую простое обновление через автоматически сгенерированный CRUD, все работает.