0

まず第一に、皆様のご尽力とご意見に感謝したいと思います。Stack Overflow は私にとって頼りになるリソースでした。大学での 4 年間よりも、このフォーラムで多くのことを学べたと感じています。

それで質問に。EF と WCF RIA を使用する Silverlight 4 プロジェクトがあります。私のページの 1 つで、Ria Web サービス呼び出しを介してテーブルの内容を取得し、結果をObservableCollection<T>

シルバーライト コード:

//class variables;
public ObservableCollection<Data> DataSource { get; set; }   //Data entity
public ApplicationDomainContext Context { get; set; } //Ria Service

...
EntityQuery<Data> query = this.Context.GetDatasQuery();
this.Context.Load(query, loadedCallBack =>
{
   if( loadedCallBack.HasError )
   {
       loadedCallBack.MarkErrorAsHandled();
       MessageBox.Show("Unable to retrieve the desired data...");
       return;
   }

   this.DataSource = new ObservableCollection<Data>(loadedCallback.Entities);
}

...
private void CreateUserAction()
{
    string userName = WebContext.Current.User.Name;
    this.Context.CreateUserAction(userName, this.DataSource, callBack =>
    {
        if(callBack.HasError)
        {
            callBack.MarkErrorAsHandled();
            MessageBox.Show("Error creating user action");
            return;
        }
    }
}

サービスコード:

public partial class ApplicationDomainService :  LinqToEntitiesDomainService<ApplicationDomainModel> 
{
    [Invoke]
    public void CreateUserAction(string userName, IEnumerable<Data> dataItems)
    {
        foreach(Data dataItem in dataItems)
        {
            if( dataItem.EntityState == EntityState.Detached )
            {
                this.ObjectContext.Attach(dataItem); //ERROR???
            }
        } 
    }
}

そのため、コードは の内部で実行されif( dataItem.EntityState == EntityState.Detached)、オブジェクトをアタッチしようとするとエラーが発生します。

An object with a null EntityKey value cannot be attached to an object context.

面白いのは、Data オブジェクトをまったく変更していないことです。これらのオブジェクトは、クライアント側で Id とその他すべてと共に到着します。

誰かが私が間違っている方向に私を向けることができれば、私はそれを大いに感謝します!!!

ありがとう Martin, aka <bleepzter/>

4

1 に答える 1

2

RIA と EF の最新バージョンはまだ使用していませんが、次の変更を試してみてください。

これを変える:

    this.ObjectContext.Attach(dataItem);

これに:

    this.ObjectContext.Data.AttachAsModified(dataItem)

設定によっては、ObjectContext でデータが複数形になる場合があります。

于 2012-04-06T01:20:55.283 に答える