私はEntity Framework 4.1のコードを最初に使用しています。ASP.NET MVC 3。私のビューにはYahoo UI(YUI)データテーブルがあります。データを取得しています(JSONを使用してグリッドにデータを取り込む)。Entity Framework 4.1:リポジトリからのデータがJSON経由で表示されない
データを取得の流れ:
Controller -> Service -> Repository
私のコンテキストの設定:
public DbSet<Category> Categories { get; set; }
オリジナルレポジトリ:私のサービス層からこのリポジトリ方法に
public IEnumerable<Category> GetAll()
{
return db.Categories.ToList();
}
コール:
public IEnumerable<Category> GetAll()
{
return categoryRepository.GetAll();
}
私のアクションメソッドのデータを取得するとYUIのDataTableにそれを渡すために:
public ActionResult JsonCategoriesList()
{
JsonEncapsulatorDto<Category> data = new JsonEncapsulatorDto<Category>
{
DataResultSet = categoryService.GetAll()
};
return Json(data, JsonRequestBehavior.AllowGet);
}
JsonEncapsulatorDtoコード:私はそれを使用する場合
public class JsonEncapsulatorDto<T>
{
public IEnumerable<T> DataResultSet { get; set; }
}
この方法は、その後にエラーがありますデータ表。私はエラーを表示する方法を知らない。何も表示されません。私はデバッグを行い、DataResultSetに7のカウントがあることを確認しました。だから、私がやったことは、いくつかのテストデータを使用するようにリポジトリを変更し、それがうまくいったことです。違いは何ですか?結果を表示するにはどうすればよいですか?テストデータと
はリポジトリ:
<div id="dtCategories"></div>
<script type="text/javascript">
YAHOO.util.Event.onDOMReady(function() {
var yuiDataSource = YAHOO.util.DataSource;
var yuiPaginator = YAHOO.widget.Paginator;
var yuiDataTable = YAHOO.widget.DataTable;
var dtCategoriesColumnDefs, dtCategoriesDataSource;
var dtCategoriesConfigs, dtCategoriesDataTable;
dtCategoriesColumnDefs = [
{ key: 'Name', label: 'Name' }
];
dtCategoriesDataSource = new YAHOO.util.DataSource('@Url.RouteUrl (Url.AdministrationCategoryJsonCategoriesList())');
dtCategoriesDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
dtCategoriesDataSource.responseSchema = {
resultsList: 'DataResultSet',
fields: [
{ key: 'Name' }
]
};
dtCategoriesDataTable = new YAHOO.widget.DataTable('dtCategories', dtCategoriesColumnDefs, dtCategoriesDataSource);
});
</script>
UPDATE:
カテゴリークラス:
君たちは、データテーブルのカテゴリーの私の設定を確認したい場合はpublic IEnumerable<Category> GetAll()
{
List<Category> list = new List<Category>();
list.Add(new Category { Name = "Brendan" });
list.Add(new Category { Name = "Charlene" });
return list;
//return db.Categories.ToList();
}
わかりません
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string MetaKeywords { get; set; }
public string MetaDescription { get; set; }
public bool IsActive { get; set; }
public int? ParentCategoryId { get; set; }
public virtual Category ParentCategory { get; set; }
public virtual ICollection<Category> ChildCategories { get; set; }
}
Contextクラス:
public class PbeContext : DbContext
{
public DbSet<Category> Categories { get; set; }
public DbSet<Tutorial> Tutorials { get; set; }
protected override void OnModelCreating(DbModelBuilder dbModelBuilder)
{
dbModelBuilder.Entity<Category>()
.HasOptional(c => c.ParentCategory)
.WithMany(c => c.ChildCategories)
.HasForeignKey(p => p.ParentCategoryId);
}
}
UPDATE 2:
私は、Productオブジェクト(無循環参照)のリストを取得し、それがうまく移入することを別のビューを持っています。私は、データが返されたときにどのように見えるかを調べるためにデバッグしました。それは多分
[0] = {MyProject.Core.DomainObjects.Product}
[1] = {MyProject.Core.DomainObjects.Product}
[2] = {MyProject.Core.DomainObjects.Product}
ことができます:...ように
[0] [System.Data.Entity.DynamicProxies.Category_9E42BCEDDE8AA695F718BEBE2224E1D34291FCAF82F801F4995EEB8449479C93]
[1] [System.Data.Entity.DynamicProxies.Category_9E42BCEDDE8AA695F718BEBE2224E1D34291FCAF82F801F4995EEB8449479C93]
[2] [System.Data.Entity.DynamicProxies.Category_9E42BCEDDE8AA695F718BEBE2224E1D34291FCAF82F801F4995EEB8449479C93]
...と
製品:
カテゴリー:そして、これは、オブジェクトがリスト内のように見えた方法ですデータが返される方法のために??
グリッドを稼働させたいだけなので名前があるのはなぜですか。後でもう一方を追加します。ありがとう、あなたのソリューションは正常に動作します:) –
私はvarを使用するのが好きではありません、私はそれを置き換えることができますか? –
@Brendan Vogt、これは 'var'を参照していますか? –