ASP NET MVC5 Web應用程序,E.F.6時,Visual Studio 2015年查詢在視圖模型的ICollection的
CategoryTrans模型類是分類模型類虛擬ICollection的。
類別模型類是產品模型類中的虛擬屬性。
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有一個由Category和ISO_languages FK組成的複合PK。當查詢表,並與產品及相關類別的翻譯填充productviewmodel我得到的所有類別的轉換(一個「CATEGORY_ID」與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