ASP NET MVC5 WebアプリケーションでいるICollectionの照会、E.F.6、Visual Studioの2015はViewModelに
CategoryTransモデルクラスは、Categoryモデルクラスの仮想いるICollectionです。
カテゴリモデルクラスは、Productモデルクラスの仮想プロパティです。
public partial class Product
{
public int? ID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public virtual Category Category { get; set; }
}
public partial class Category
{
public int ID { get; set; }
public string Name { get; set; }
public int? ParentID { get; set; }
public bool IsDeleted { get; set; }
public virtual ICollection<Product> Products { get; set; }
public virtual ICollection<CategoryTrans> CategoryTrans { get; set; }
}
public class CategoryTrans
{
[Key, Column(Order = 1)]
public int category_id { get; set; }
[Key, Column(Order = 2)]
public int language_id { get; set; }
[ForeignKey("category_id")]
public virtual Category categoryId { get; set; }
[ForeignKey("language_id")]
public virtual ISO_Languages languageId { get; set; }
public string name { get; set; }
}
CategoryTransには、カテゴリとISO_languages FKによって作成された複合PKがあります。テーブルをクエリしてproductviewmodelに商品や関連するカテゴリの翻訳を入力すると、Product.Category.CategoryTransコレクション内のすべての 'language_id'と共にすべてのカテゴリの翻訳が取得されます。
私がする必要があるのは、単一変換(CategoryTrans.name)ユーザー培養入力パラメータごととして
私はそれのようにViewModelにプロパティを設定することによって行うことができるはず:
public CategoryTrans CategoryTrans
{
get
{
HttpUtilities HttpHelper = new HttpUtilities();
string culture = HttpHelper.getShortCulture();
var CT = Product.Category.CategoryTrans.Select(x => new CategoryTrans
{
name = x.name
})
.Where(b => b.language_id.Equals(culture)).FirstOrDefault();
return CT;
}
そして、閲覧中:
@Html.DisplayFor(modelItem => item.CategoryTrans.name)
しかし、CategoryTrans ICollectionが正しく入力されていることがわかりますが、空の値が返され続けます。 私は何か不可能なことをしようとしているのですか、それとも構文の問題が間違っていますか?
あなたの 'language_id'は整数ですよね? – User3250
この条件が最初に働いていれば、 'b.language_id.Equals(culture)'を検証しましたか? – User3250