我有一个食谱列表,用于将烹饪ID的外键存储在数据库中。
我希望我的视图模型显示"菜肴的名称"基于存储在数据库中的此ID。我该怎么做?
我的食谱数据库看起来像:
名称:鸡肉汉堡,美食ID:4 名称:蔬菜示例,美食ID:3
美食数据库如下: 姓名:印度人身份= 1, 姓名:中文,Id = 2,......等
我希望我的视图模型显示烹饪名称,而不是仅用于数据库参考的ID。
我正在使用Entity Framework连接到我的数据库,只需要一个很好的方式,我可以显示每个食谱的所有美食名称,菜肴名称将从菜肴数据库中提取,具体取决于存储在食谱
烹饪模型
public class Cuisine
{
public int Id { get; set; }
public string CuisineName { get; set; }
public virtual ICollection<TestRecipe> TestRecipes { get; set; }
}
食谱模型
public class TestRecipe
{
public int Id { get; set; }
public string Name { get; set; }
public int CuisineId { get; set; }
public virtual Cuisine Cuisine { get; set; }
}
食谱控制器:
public class TestRecipeController : Controller
{
private FoodZillaDb db = new FoodZillaDb();
//
// GET: /TestRecipe/
public ActionResult Index()
{
var model = db.TestRecipes
.Take(10);
return View(model);
}
//
// GET: /TestRecipe/Details/5
public ActionResult Details(int id)
{
return View();
}
//
// GET: /TestRecipe/Create
public ActionResult Create()
{
ViewBag.CuisineId = new SelectList(db.Cuisines, "Id", "CuisineName");
return View();
}
//
// POST: /TestRecipe/Create
[HttpPost]
public ActionResult Create(TestRecipe recipe)
{
if (ModelState.IsValid)
{
db.TestRecipes.Add(recipe);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.CuisineId = new SelectList(db.Cuisines, "Id", "CuisineName",recipe.CuisineId);
return View("Index");
}
我希望索引视图控制器发送菜单名称而不是存储在TestRecipe DB中的ID。我相信我必须做一些内心的加入?
答案 0 :(得分:1)
var query1 = from r in db.MyRecipe
join c in db.Cuisine
on c.Id equals r.Id
select new MyViewModel()
{
CuisineName = c.Name
Price = r.Name,
........
};