如何使Entity Framework DB-first生成单个.cs文件,而不是每个类生成一个文件

时间:2014-12-08 18:43:55

标签: c# .net entity-framework entity-framework-6

我有一个包含许多(~500)表和存储过程的现有数据库。每当数据库更新时,我都需要根据新模式为Entity Framework 6重新生成.edmx文件;该过程产生大约500个文件,每个表一个,每个存储过程至少返回一个结果。

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

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

// fileManager.Process()

但是我只能在实体框架生成500多个文件之后执行此操作。每隔几天必须这样做会非常烦人。

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

确保从一开始只生成一个.cs文件的最佳方法是什么?我愿意尽可能地去分析EntityFramework,修改VS模板,或者根据需要做其他非传统的事情。

1 个答案:

答案 0 :(得分:1)

您可以使用this工具,您可以将其配置为将所有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
}

您可以找到有关初始化db contexts here的更多详细信息。

因此,您可以使用该工具为您生成POCO并仍使用您的数据库,这比使用EDMX文件更清晰。

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