【问题标题】:ASP.NET Core Entity Framework Core inheritenceASP.NET Core 实体框架核心继承
【发布时间】:2017-07-25 01:14:24
【问题描述】:
  1. 有一个模型类叫做Review。

  2. ReviewModel 用于 StoreModel 和 Menu 模型。

在 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 个子类(StoreReview、MenuModel)

或

  • 将ReviewModel 用于StoreModel 和MenuModel(如何?)

或

  • 有什么想法?

【问题讨论】:

  • 请避免提出征求意见的问题,这是题外话:许多好的问题会根据专家的经验产生一定程度的意见,但这个问题的答案往往几乎完全基于意见,而不是事实、参考资料或特定专业知识。

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


【解决方案1】:

如果两个(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; }

}

【讨论】:

  • 哇,这很容易!但我可以使用继承吗?它只适合我:D
  • 我不会使用继承,但如果必须,只需创建一个基本 Review 类,然后从中创建两个子类。在菜单和商店模型上使用每个。在子类上设置表属性。
猜你喜欢
  • 2021-08-23
  • 2022-11-18
  • 1970-01-01
  • 2020-08-16
  • 1970-01-01
  • 1970-01-01
  • 2011-05-19
  • 2010-10-07
相关资源
最近更新 更多