【问题标题】:Entity Framework: Naming conventions/suggestions for EDMX file and entity class?实体框架:EDMX 文件和实体类的命名约定/建议?
【发布时间】:2012-04-06 21:12:40
【问题描述】:

我还没有与实体框架有太多接触,因此我想听听一些有经验的人。

我有一个 MVC 项目,而我的 DataAccess 位于另一个项目中,我想在其中放置我的 EDMX 文件。

那么我想如何命名这个文件呢?默认情况下它是“Model1.edmx”,但在 MVC 的上下文中,我对这个名称感到不舒服。真的是模特吗? 我倾向于称它为“DbModel”或其他名称以表明它是与数据库相关的东西。

你们怎么称呼实体类?我想我喜欢 EF 的典型名称“DbContext”。

所以在我的控制器中我会有类似的东西

public class WorldController : Controller
{
    DbContext db = new DbContext();

    public ActionResult Own()
    {
        var allContinents = db.Continents;
        [...]
    }
}

对不起,我很在意命名。

【问题讨论】:

    标签: asp.net-mvc entity-framework edmx


    【解决方案1】:

    关心命名很好!

    如何做到这一点取决于您的应用程序的组成。假设您有一个用于注册 UFO 目击事件的 Web 应用程序,举个常见的例子。如果您的数据库有一个单独的部分(可能是一个单独的模式)包含用户、角色和权限,您可以创建一个名为 AuthorizationContext 的上下文,并为业务部分创建一个名为 UfoDbContext 的上下文。

    我的意思是,如果有明确的聚合没有或很少重叠,您可以使用明确的名称为它们创建单独的上下文。如果一个上下文符合要求,我仍然会给它一个与您的应用程序域相关的有意义的名称(不是 DbContext)。

    有些人(我不是其中之一)喜欢为每个应用程序“列”(数据库到 UI)或“用户故事”使用一个上下文。那么有意义的名字就更重要了。

    【讨论】:

    • 我需要 2 个 EDMX 文件用于 2 个不同的模式(在同一个数据库上),所以我想我现在将它们命名为:Schema1DbModel.edmx、Schema1DbContext 和 Schema2 相同。你同意吗?我想它更适合我们的开发人员,因为每个人都非常了解这些模式,并且对我们来说是不言自明的。
    • 或者您会在“DbModel”中为 EDMX 文件剪切“Db”吗?什么都不用,或者像 knoia 说的那样使用“EfModel”?
    • 无论适合你,EfModel 可能是一个不错的选择,我个人喜欢与实现无关的名称。但无论你选择什么:保持一致!
    • 最后一个问题:与实现无关是什么意思?所以你只选择“模型”(例如“Schema1Model”)?
    • 我的意思不是指例如实体框架。明天你可能会选择 linq to sql(嗯,不太可能,但你明白了)。
    【解决方案2】:

    我的建议是在命名中使用指示内容的东西。例如,您可以使用您的项目名称的一部分,并将其归结为 EDMX 的名称。包括一些使它不那么通用的东西。

    我也倾向于在我的命名中包含一个“Ef”,这是我在处理一个已经有现有 ORM 的项目时开始的。

    以 Microsoft 的典型示例为例:如果您的项目属于 Norwind 的总称,以下是我将如何命名我的模型项目中的一些文件:

    EDMX 文件: NorwindEfModel.edmx

    生成器/TT 文件: NorwindEfDbContext.tt

    实体类: 诺温实体

    如果您从 Microsoft 下载示例项目,我不能说这就是 Microsoft 的样子(尽管我相信它会相似),但我认为这是一个合理的命名结构,它符合我的需要。最重要的是,这在很大程度上取决于意见和您对特定区别的需求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多