2017-11-11 7 views
0

モデルをwcfサービスに送信しようとしています。 まずiは、シリアル化の問題を抱えていたが、私はEntity Framework 4.0モデルがすべてのデータを取得しない

ContextOptions.ProxyCreationEnabled = false; 

リファラDataContractSerializer Error using Entity Framework 4.0 with WCF 4.0 が、現在はモデルのプロパティ税や製品を設定することによって、それを解決するに

public ClientWindowViewModel() 
    { 
     Ip = ServerWindowViewModel.LocalIP; 
     db = new STOREDBEntities(); 
     db.Configuration.ProxyCreationEnabled = false; 
     products = db.Products;//.Where(p => p.IsSynced == false) 
    } 

製品モデル

public partial class Product 
    { 
     [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] 
     public Product() 
     { 
      this.Categories = new HashSet<Category>(); 
     } 

     public int Id { get; set; } 
     public string ProductName { get; set; } 
     public byte[] Image { get; set; } 
     public bool IsDeleted { get; set; } 
     public bool IsSynced { get; set; } 

     [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] 
     public virtual ICollection<Category> Categories { get; set; } 
     public virtual Tax Tax { get; set; } 
    } 

送るヌルですWCFサーバー

channel.Update(checkedProducts); 

答えて

0

私が間違っている場合は、WCF契約によってProductクラスを送信し、送信した後にnullとデフォルト値のみを取得しますか?

Productクラスの[DataContract]、[DataMember]などの適切な注釈を設定せずにWCFでオブジェクトを送信することはできません。

[DataContract]をクラスの上に設定し、[DataMember]を各プロパティの上に設定します。これがなければ、メッセージは適切にシリアル化されません。私は税 を

ContextOptions.ProxyCreationEnabled = false; 

それが何を設定していない製品とを取得していたときに問題がWCF.Theの問題ではないことを

+0

はい。私は答えが上にそれを参照してください:) –

0

Iファンドは、私はそれを

Products = dbGet.Products.Include("Categories").Include("Tax").ToList(); 
を含むため .Include("PropertyName")を書く必要があります

私は.Include("PropertyName")メソッドを追加してサーバにリストを送信しようとするとシリアライズで例外が発生する(サイクリングについて製品にカテゴリのインスタンスがある製品のインスタンスがある...) そして私は誰もがサイクリングを無効にすることについてのよりよい解決策を知っていれば書いてください

foreach (var item in products) 
     { 
      foreach (var ct in item.Model.Categories) 
      { 
       ct.Products = null; 
      } 
      item.Model.Tax.Product = null; 
     } 

をゼロにするためにサイクリングinstacnesを設定してそれを解決!

関連する問題