2016-04-26 27 views
3

我是新来使用ASP.net和MVC,需要一些help.I目前正在一个项目,这是一个在线食谱书,我有各种表,但我想合并成一个视图的两个表是配方和RecipeIngredients,如下所示:asp.net:我如何将两个模型组合在一起以创建一个Parent及其所有子实体?

Recipe.cs

namespace TheOnlineFoodBook.Models 
    { 
     public class Recipe 
     { 
      [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
      public int RecipeID { get; set; } 
      [Display(Name = "Recipe")] 
      public string RecipeName { get; set; } 
      [Display(Name= "Cuisine")] 
      public int CuisineID { get; set; } 
      public string Directions { get; set; } 
      [Display(Name = "Preperation Time:")] 
      public double PreperationTime { get; set; } 
      [Display(Name = "Cooking Time:")] 
      public double CookingTime { get; set; } 


      public virtual List<RecipeIngredient> RecipeIngredients { get; set; } 

      [ForeignKey("CuisineID")] 
      public virtual Cuisine Cuisine { get; set; } 
     } 
    } 

RecipeIngredient.cs

public class RecipeIngredient 
    { 
     [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
     public int ID { get; set; } 
     public int RecipeID { get; set; } 
     public int IngredientID { get; set; } 
     public double Quantity { get; set; } 
     public int MeasurementID { get; set; } 
     public string Notes { get; set; } 

     public virtual Recipe Recipe { get; set; } 
     public virtual Measurement Measurement { get; set; } 
     public virtual Ingredient Ingredient { get; set; } 
    } 
} 

我已经读了一些关于组合模型来创建viewModel的一些信息,但我不知道如何去做这件事,并且我还希望能够在创建食谱时同时添加多个RecipeIngredients条目。目前我有基本的CRUD视图工作哪个实体框架为我创建。

回答

0

这会做你需要的吗?

public class RecipeViewModel 
{ 
    public Recipe Recipe { get; set; } 
    public List<RecipeIngredients> RecipeIngredientsList { get; set; } 
} 

您将无法作为有效地使用数据的注释,但如果这不是一个问题,你现在就可以多RecipeIngredients连接到同一Recipe您的页面。

+0

我已经创建了一个视图模型,我只是不知道该从哪里走那里。 –

+1

您可以像加载任何其他类一样加载ViewModel,然后将该模型传递给您的视图。 '返回视图(模型);'在你的视图中,你可以像任何其他类一样访问每个属性。 'Model.Recipe.RecipeName'和'Model.RecipeIngredientsList [i] .Notes' – DunningKrugerEffect

1

你已经在“RecipeIngredient”因此,使用“RecipeIngredient”作为您的视图模型将让您访问“配方”的属性,另一种方法,你可以通过new Tuple<Person, Order>(new Recipe(),new RecipeIngredient());后,使用您的视图@modelTuple<Recipe,RecipeIngredient>采取“配方”对象因为你会通过一个模型,但我不会看到在后续的使用,因为“RecipeIngredient”已经有“配方”