Entity framework EFcore生成的实体是否可以在没有基类的情况下使用?

Entity framework EFcore生成的实体是否可以在没有基类的情况下使用?,entity-framework,ef-core-2.0,clean-architecture,Entity Framework,Ef Core 2.0,Clean Architecture,我正在尝试从零开始实施一个干净的体系结构项目,下面是他们的eShopOnWeb示例项目 在我的例子中,EF实体首先是数据库。为此,我使用了scaffoldbcontext工具,但它似乎不允许为生成的实体指定基类。这通常不会是一个问题(我猜),但对于所有实体,eShopOnWeb项目似乎都有一个BaseEntity超类 我的问题是- 我是否应该担心所有实体都扩展了一个基类?如果我只是按原样使用实体会怎么样(我对此有些陌生,所以可能缺少一些非常基本的东西)?在这种情况下,基类是正确的选择,是否有一个

我正在尝试从零开始实施一个干净的体系结构项目,下面是他们的eShopOnWeb示例项目

在我的例子中,EF实体首先是数据库。为此,我使用了
scaffoldbcontext
工具,但它似乎不允许为生成的实体指定基类。这通常不会是一个问题(我猜),但对于所有实体,eShopOnWeb项目似乎都有一个
BaseEntity
超类

我的问题是-

  • 我是否应该担心所有实体都扩展了一个基类?如果我只是按原样使用实体会怎么样(我对此有些陌生,所以可能缺少一些非常基本的东西)?在这种情况下,基类是正确的选择,是否有一个“正式”的解决方案来生成具有预定义基类的实体

  • 微软的官方示例应用程序eShopOnWeb使用代码优先的方法处理数据库。就最佳实践而言,这是否意味着这是微软的官方建议?我对此有点担心,因为使用这种方法,我不确定如何进行数据库优化和微调(索引和所有其他特定于数据库的内容)等


  • 实体不需要扩展基类。我唯一一次使用它们是在一些/大多数实体(如“EditableEntity”)具有真正公共字段的系统中,在这些系统中,我可能会放置诸如CreatedBy、CreatedAt、ModifiedBy、ModifiedAt、RowVersion等公共字段。例如,我不使用“Id”的基类,因为经常会有使用不同Id的情况,或者对某些表采用复合Id的情况

    大多数示例首先使用代码仅仅是因为它使用代码来建立模式,这是他们希望开发人员理解的,而不是SQL。在我看来,这对快速启动和运行很好,但从长远来看,我发现这比它的价值更麻烦。(一旦到了DB数据完整性非常重要的地步,就要手动调整迁移了。)就我个人而言,我从来没有使用过它,因为我的背景是先编写代码,然后才使用SQL和ORMs,所以我更习惯于边代码边思考模式,并使用显式映射来确保我确切地知道EF将如何解释该模式。了解代码优先和迁移是如何工作的很好,但是如果您对构建模式感到满意,那么DB优先就可以了。关于学习如何映射关系和高效查询数据的最佳实践开始发挥作用。也就是说,利用
    .Select()
    可能是充分利用实体框架最难理解的方面