私はエンティティ/ LINQの/ラムダに新たなんだと、私は次のような問題を持っているに変換しましたJSON ApiからASP.NET MVCまでデータベースはMSSQLで、データアクセス層としてC#エンティティフレームワークを使用しています。の取得データは、匿名オブジェクト
1つのテーブルからデータを取得する場合、これを匿名オブジェクトに変換してから、JSONに変換して循環参照エラーを回避する必要があります。
これは簡単な例ですが、例えば、これらのテーブルを取る:
私は単純にJSON内のすべての翻訳者を返すようにしたい場合は、これは私がそれについて移動する方法です:
DBEntities db = new DBEntities();
var data = db.Translator.Select(x => new
{
TranslatorID = x.TranslatorID,
FirstName = x.FirstName,
LastName = x.LastName,
Email = x.Email,
Referenced = x.TranslatorLanguage.Count != 0
});
return Json(data, JsonRequestBehavior.AllowGet);
エンティティによって
生成されたモデルクラスは、次のようになります
public partial class Translator
{
public Translator()
{
this.TranslatorLanguage = new HashSet<TranslatorLanguage>();
}
public int TranslatorID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public virtual ICollection<TranslatorLanguage> TranslatorLanguage { get; set; }
}
public partial class TranslatorLanguage
{
public int TranslatorLanguageID { get; set; }
public int SourceLanguageID { get; set; }
public int TargetLanguageID { get; set; }
public virtual Translator Translator { get; set; }
public virtual Language Language1 { get; set; }
public virtual Language Language2 { get; set; }
}
public partial class Language
{
public Language()
{
this.TranslatorLanguage = new HashSet<TranslatorLanguage>();
this.TranslatorLanguage1 = new HashSet<TranslatorLanguage>();
}
public int TranslatorLanguageID { get; set; }
public int SourceLanguageID { get; set; }
public int TargetLanguageID { get; set; }
public virtual ICollection<TranslatorLanguage> TranslatorLanguage { get; set; }
public virtual ICollection<TranslatorLanguage> TranslatorLanguage1 { get; set; }
}
しかし、各TranslatorオブジェクトにTranslatorLanguageエントリを持つ配列が含まれているすべてのトランスレータと、ソース言語とターゲット言語のそれぞれがvarcharコードと説明値を持つJSONを返すことができるようにしたいと考えています。
私はこのことについてどうすればいいか分かりません。 ありがとうございます。
はあなたが定義を追加することができますあなたのクラスの? –
plz質問にエンティティモデルを追加 –
質問を変更し、生成されるモデルを追加しました – Ruben