2017-06-19 13 views
0

私は、一対多関係の多くの側の外来キーであるフィールドを持っています(例えば、Order - >LineItem)。私はエンティティフレームワークにヌル以外のフィールドをマークし、 "削除、カスケード"関係を追加して、[Required]属性でデコレートします。しかし、私はNewtonsoft.JSONがフィールドを直列化または非直列化して、[JsonIgnore]属性でそれを飾ることは望ましくありません。しかし、[Required]属性のトランプ[JsonIgnore]が表示されます。フィールドが必須であるとのエラーが表示されるためです。私はこの仕事をすることができる方法はありますか?Newtonsoft.JSON ignore [必須]属性

public class LineItem 
{ 
    [JsonIgnore] 
    [Required] 
    public int OrderId { get; set; } 
} 
+1

は、あなたが例外を取得するコードを表示 – Steve

+2

あなたが取得している正確なエラーがどのようなものですしてください?私の知る限り、Json.Netは '[Required]'属性をまったく探しません。フィールドに必要なフィールドを作成するための独自のメカニズムを備えています。 '[JsonProperty(必須=必須。常に)]'。 –

+0

私はJSON.NETがあなたが得ているエラーと何か関係があるのではないかと疑います。そのオブジェクトは正しくデシリアライズされている可能性がありますが、使用しているフレームワーク(Web API?MVC?)は、取得したパラメータが無効であると考えてリクエストをブロックしています。与えられたリクエストに 'OrderId'を必要としないようにするには' LineItem'クラスを使わないでください。 'OrderId'が必要ではない、またはあなたの特定のニーズに基づいて、全く存在しないモデルを作成することができます。 – StriplingWarrior

答えて

1

私は答えとしてこれを入れていたが、次のコードは動作します:

using Newtonsoft.Json; 
using Newtonsoft.Json.Linq; 
using System; 
using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ConsoleApp2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      LineItem item = new LineItem 
      { 
       OrderId = 10 
      }; 


      string json = JsonConvert.SerializeObject(item, Formatting.Indented); 
      var t = JsonConvert.DeserializeObject<LineItem>(json); 
     } 
     public class LineItem 
     { 
      [JsonIgnore] 
      [Required] 
      public int OrderId { get; set; } 
     } 
    } 
} 
関連する問題