2016-06-22 5 views
0

私はEntity Frameworkのコアを使用していて、生成されたクラスは、独自のプロパティを持っている、すなわちJSONオブジェクトのプロパティの順序を制御する方法はありますか?

DataModel.Agent.cs

public partial class Agent { 

    public virtual decimal Id 
    { 
     get; 
     set; 
    } 

    public virtual string Name 
    { 
     get; 
     set; 
    } 
} 

しかし、私は他のプロパティを必要とするので、私は別でそれらを宣言するファイル:

Agent.cs

public partial class Agent 
{ 
    [NotMapped] 
    public dynamic Custom { get; set; } 
} 

問題は、Agent.csがDataModel.Agent.csの前にコンパイルされているため、コンパイラがカスタム、ID、名前の順にプロパティを生成し、結果JSONが異常です。

私はそれが:Id、Name、Customであることを望みます。言い換えれば、私は常にDataModelクラスが最初に来たいと思っています。

EDIT:唯一の目的は、非常に一般的なパターンであるIdを常に最初に置くことでJSONをよりきれいにすることです。これは、アプリケーションの動作にはまったく影響しません。

コンパイラが最初にファイルの1つを最初にコンパイルするように強制する方法はありますか?

+2

を使用すると、これが本当であれば、JSONのプロパティの順序は、上にカウントされることになっていません。 –

+0

Jsonオブジェクトは辞書としてシリアライズされています。辞書キーに固有の順序はありません –

+0

「結果のJSONは奇妙です」という意味はどうですか?オブジェクトはJSONの辞書としてシリアライズされ、固有の順序はありません。 ID、名前、カスタムを持つ辞書は、同じ値を持つID、カスタム、名前を持つ別のものと同等です* –

答えて

4

さてあなたは本当にJSONプロパティの順に数えるべきではなく、json.net

public class Account 
{ 
public string EmailAddress { get; set; } 

// appear last 
[JsonProperty(Order = 1)] 
public bool Deleted { get; set; } 

[JsonProperty(Order = 2)] 
    public DateTime DeletedDate { get; set; } 

    public DateTime CreatedDate { get; set; } 
    public DateTime UpdatedDate { get; set; } 

    // appear first 
    [JsonProperty(Order = -2)] 
    public string FullName { get; set; } 
} 

http://www.newtonsoft.com/json/help/html/JsonPropertyOrder.htm

+0

私は探していたものではなく、ファイル全体を注文していましたが、私の問題は解決しました。どうもありがとうございました! –

+0

私はこれを100%確信しておらず、VSはそれらを自動的に並べ替えることになりますが、すべてのコンパイルタグを含む.csprojファイルのItemGroup内のファイルの順序を変更しようとすると、Buildは単にそれらをcsproj .NETファイルのコンパイルの順序は、参照のためのプロジェクトの順序の外では関係ありません。 –

+0

これを理解するための鍵は、「MSBuildプロジェクトファイル標準は、ビルドルールを作成するために宣言的言語を使用します。命令は重要ではありません。 –

関連する問題