如何使实体框架数据库优先生成单个.cs文件,而不是每个类生成一个文件

本文关键字:文件 一个 数据库 框架 实体 何使 先生 cs 单个 | 更新日期: 2023-09-27 18:33:44

我有一个现有的数据库,其中包含许多(~500(表和存储过程。每当数据库更新时,我都需要基于新架构重新生成实体框架 6 的 .edmx 文件;该过程生成大约 500 个文件,每个表一个文件,每个返回结果的每个存储过程至少一个文件。

出于各种原因,我宁愿有一个包含所有类的文件。

我知道我可以注释掉这一行<EntityModelName>.tt以合并所有文件:

// fileManager.Process()

但是,只有在实体框架生成 500+ 个文件后,我才能执行此操作。每隔几天就不得不这样做会很烦人。

更新 .edmx 文件而不是删除并重新生成它通常会导致由于数据库架构问题而导致的错误,这些问题不会很快得到解决。

确保从一开始就只生成一个.cs文件的最佳方法是什么? 我愿意在必要时分叉EntityFramework,修改VS模板或做其他非常规的事情。

如何使实体框架数据库优先生成单个.cs文件,而不是每个类生成一个文件

您可以使用

此工具将其配置为将所有POCO生成到单个文件中(默认情况下(或分离文件,此外,您还可以查看更多选项并检查视频是否存在于我提到的链接上。

请记住,只需将上下文的初始值设定项设置为 null,就可以先在代码优先和数据库之间切换,因此:

public class MyDbContext : DbContext
{
    static MyDbContext()
    {
        // I don't want to initialize my database from code, I already have a database.
        Database.SetInitializer<MyDbContext>(null);
    }
    //
    //
    // you dbsets goes here
}

您可以在此处找到有关初始化数据库上下文的更多详细信息。

因此,简而言之,

您可以使用该工具为您生成 POCO,并且仍然可以使用您的数据库,这比使用 EDMX 文件要干净得多。

如果您需要更多详细信息或仍然感到困惑,请告诉我。