Я использую VS 2010 и Silverlight 4 и WCF RIA v1
При попытке использовать именованный метод обновления в доменной службе я получаю странную ошибку.
Это ошибка:
"Сообщение: необработанная ошибка в приложении Silverlight * Операция отправки не удалась. Значение не может быть нулевым. * Имя параметра: оригинал в System.ServiceModel.DomainServices.EntityFramework.ObjectContextExtensions. "
Здесь происходит ошибка в доменной службе this.ObjectContext.Prospect.AttachAsModified (p, this.ChangeSet.GetOriginal (p));
Я прочиталдокументация по изменению для WCF, и я думаю, что я все делаю правильно.
Может кто-нибудь помочь мне выяснить, что происходит?
Приветствия
Это кодобъяснение:
Клиент
.....
<riaControls:DomainDataSource.DomainContext>
<my:MarketingDomainContext />
</riaControls:DomainDataSource.DomainContext>
.....
<Grid x:Name="LayoutRoot" Background="White">
<Grid DataContext="{Binding ElementName=comboBoxProspects, Path=SelectedItem}"
Name="gdProspects" Margin="10">
..............
Я извлекаю сущность "Перспективы" из таблицы.
Я попытался вызвать именованный метод обновления, используя как глобально объявленный контекст, так и метод обновления int Entity.
public partial class MainPage : UserControl
{
MarketingDomainContext ctx;
private void dsProspects_LoadedData(object sender, LoadedDataEventArgs e)
{
ctx = (MarketingDomainContext)dsProspects.DomainContext;
}
private void btnSubmit2_Click(object sender, RoutedEventArgs e)
{
//((Prospect)gdProspects.DataContext).CalculateProspectValue(
// int.Parse(tbNumber1.Text), int.Parse(tbNumber2.Text));
var tempProsp = gdProspects.DataContext as Prospect;
ctx.CalculateProspectValue(tempProsp, int.Parse(tbNumber1.Text),
int.Parse(tbNumber2.Text));
ctx.SubmitChanges();
}
Метод доменной службы
[Update(UsingCustomMethod=true)]
public void CalculateProspectValue(Prospect p, int a, int b)
{
p.Comments = "Value = " + a * b;
// Error happens here
this.ObjectContext.Prospects.AttachAsModified(p, this.ChangeSet.GetOriginal(p));
}
public void UpdateProspect(Prospect currentProspect)
{
this.ObjectContext.Prospects.AttachAsModified(currentProspect, this.ChangeSet.GetOriginal(currentProspect));
}