0

VS 2010 と Silverlight 4 と WCF RIA v1 を使用しています

ドメイン サービスで名前付き更新メソッドを使用しようとすると、奇妙なエラーが発生します。

これはエラーです:

「メッセージ: Silverlight アプリケーションで未処理のエラーが発生しました *送信操作に失敗しました。値を null にすることはできません。 *パラメーター名: 元の System.ServiceModel.DomainServices.EntityFramework.ObjectContextExtensions にあります。」

ここでドメイン サービスでエラーが発生します this.ObjectContext.Prospects.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">

………………

グリッドから Prospects エンティティを取得します。

グローバルに宣言されたコンテキストと update メソッド int Entity の両方を使用して、名前付き update メソッドを呼び出そうとしました。

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));

 }
4

1 に答える 1

1

[RoundTripOriginal] 属性を、キーではないメタデータの「Prospects」メンバーの 1 つに追加する必要があります。

于 2011-03-01T16:19:47.227 に答える