0

まず、あなたの努力とご意見をいただき、ありがとうございました。 Stack Overflowは私のためのリソースです。私はこのフォーラムで私の大学で4年以上学んだことがあると思います。Silverlight、EF4、WCF RIA:nullのEntityKey値を持つオブジェクトはオブジェクトコンテキストにアタッチできません。

だから質問に。私はEFとWCF RIAを使ったSilverlight 4プロジェクトを持っています。 は私のページのいずれかで、私はリアのWebサービス呼び出しを介してテーブルの内容を取得し、ObservableCollection<T>

SILVERLIGHTコードで結果を格納:

//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.

私はデータオブジェクトをまったく変更しないで、クライアント側にIDとその他すべてが届くのは面白いです。

誰かが私が間違っていることの方向に私を指し示すことができるなら、私は大いに感謝します!

おかげ Martin, aka <bleepzter/>

+0

添付したらオブジェクトを使って何をする予定ですか? – Bryant

答えて

2

が、私はまだRIAとEFの最新バージョンを使用していないが、あなたは以下の変更をしようとする場合があります:

変更この:

this.ObjectContext.Attach(dataItem); 

へこれは:

this.ObjectContext.Data.AttachAsModified(dataItem) 

データが複数の場合がありますあなたの設定に応じて、ObjectContextを編集します。

+0

さて、私はこれを試して、それは働いた。ある程度!エンティティが2回追加されました! – bleepzter

+0

CreateUserActionメソッドを記述しましたか、それともサービスクラスで生成されましたか? – VagabondSW

+0

私はそれを書いた。だからこそ、サービスは宣言に 'public partial'を持っています。実際のサービスはVS2010のDomainServiceプロンプトによって生成されましたが、問題が発生しているサービスの機能は別のファイルにあります。 – bleepzter

関連する問題