ASP.NET核心实体框架核心继承

时间:2017-07-25 01:14:25

标签: c# asp.net-core entity-framework-core domain-model

  1. 有一个名为Review的模型类。

  2. ReviewModel来自StoreModelMenu型号。

  3. 在StoreModel.cs

    [Table ("Stores")]
    public class StoreModel
    {
        [Key]
        public int Id { get; set; }
    
        public string StoreName { get; set; }
        public string StoreShortDescription { get; set; }
        public string StoreFullDescription { get; set; }
        public string StoreAddress { get; set; }
    
        public ICollection<MenuModel> Menus { get; set; }
        public ICollection<ReviewModel> Reviews { get; set; }
    
        public StoreModel ()
        {
            Menus = new Collection<MenuModel> ();
            Reviews = new Collection<ReviewModel> ();
        }
    }
    
    在MenuModel.cs中

    [Table ("Menus")]
    public class MenuModel
    {
        [Key]
        public int Id { get; set; }
    
        public string MenuName { get; set; }
        public string MenuShortDescription { get; set; }
        public string MenuThumbnailUrl { get; set; }
        public int MenuPrice { get; set; }
    
        public ICollection<ReviewModel> MenuReviews { get; set; }
    
        public MenuModel ()
        {
            MenuReviews = new Collection<ReviewModel> ();
        }
    }
    

    在这种情况下,我该如何实现?

    • 创建一个基础ReviewModel类,并有2个子类(StoreReviewMenuModel

    • ReviewModelStoreModel使用MenuModel(如何?)

    • 想法?

1 个答案:

答案 0 :(得分:0)

如果(StoreModel和MenuModel)中的ReviewModel属性相同,则无需做任何特殊操作,只需使用ReviewModel,因为它在两个模型的显示代码中使用。 在任何情况下,只需向ReviewModel添加一个枚举属性即可知道它是StoreModelReview还是MenuModelReview。 您的ReviewModel可能如下所示:(创建多个2多个关系)

[Table ("Reviews")]
public class ReviewModel
{
    [Key]
    public int Id { get; set; }

    public ReviewEnum Type { get; set; }



    public ICollection<MenuModel> Menus{ get; set; }
    public ICollection<StoreModel> Stpres{ get; set; }

}