实体框架,POCO,通过代码创建自己的数据库?

时间:2012-02-13 08:29:50

标签: .net entity-framework poco

我很想知道是否有任何合理的方法可以在实体CREATE MyDatabase,mabye CREATE Table1方法中创建自己的数据库DbContextInitializeDatabase? 我知道带有POCO的EF 4.1会为我做,但现在看来如果我想在数据库初始化期间生成一些事件(参见编辑),我可能想在我的代码中生成数据库。

如果我想向最终用户报告数据库创建进度,我需要在我的代码中创建数据库ant表,为此,我需要弄清楚如何在我的代码中创建数据库(而不是表)

我试过了:

public void InitializeDatabase(MyContext context)
{

    context.Database.ExecuteSqlCommand("Query to create table");
}

但问题是我需要首先创建数据库以创建表,但是如何做到这一点?或者有更好的方法来做我想要的事情?

修改

是的,我知道POCO会自动为我做这件事,但不幸的是,似乎我确实需要/想要通过我的代码用POCO创建数据库和表,原因是我想在数据库创建/初始化短语期间显示进度?我可以出来的唯一方法是创建数据库并通过我自己的代码创建表,并在每个表创建后生成事件。

3 个答案:

答案 0 :(得分:0)

实体框架将尝试创建您在连接字符串中配置的数据库。只需确保连接到服务器的用户有权创建数据库。

答案 1 :(得分:0)

您正在做的事情看起来像Entity Framework Code First。

如果需要,可以在模型构建器Seed方法中创建数据库和/表。

如果您的唯一目标是向用户报告进度,则无需使用自己的查询创建数据库。您可以使用ModelBuilder OnModelCreating

执行此操作

答案 2 :(得分:0)

  

是的,我知道POCO会自动为我做这件事,但不幸的是,我确实需要自己创建数据库和表格,即使是POCO

都能跟得上!至少,如果您使用的是Entity Framework 4 (.Net 4.0附带的版本,需要Visual Studio 2010.VS 2008不能使用.Net 4.0)

它被称为代码优先开发。基本上,您编写数据类,实体框架根据类关系,属性名称和一些可选的EF特定属性自动推断数据库结构。然后它会自动为您创建数据库(尽管对自动迁移的支持很少...... for now

Code First herehere有一些简单的教程。