2

我是 ASP.NET MVC 的新手,但与 RoR 打过交道,所以我熟悉 MVC 模式。

我很好奇在使用 Code First 方法时处理数据库部分的可能性。一位 ASP.NET 开发人员同事告诉我,您可以创建一个空数据库,即没有表的数据库,并使用 EF Code First 在该空数据库中创建表。

那是对的吗?

我在任何地方都找不到关于该特定方法的任何教程/文档。我遇到了从现有数据库表开始但不是没有表的现有数据库的 Code First 方法。

我愿意知道:

如果这是可能的。如果不是,那么下一个最接近的方法是什么?

谢谢

谢谢

4

3 回答 3

2

在最基本的层面上,您创建一个类来表示您的表,一个上下文类(派生自 DbContext),然后在包管理器控制台中执行命令以创建迁移/脚本和/或直接更新数据库模式(将其视为rake db migrateEF 代码优先)。

public class User
{
    public string Username {get;set;}
    public string Password {get;set;}
}

public class DatabaseContext : DbContext
{
    public DbSet<User> Users {get;set;}
}

工具->库包管理器->包管理器控制台

打开控制台窗口后,确保在窗口顶部的“默认项目”下拉列表中选择了具有您的实体/上下文的项目,然后执行以下命令:

Add-Migration "Description of your migration"

这将为您创建一个迁移类,该类代表您自上次迁移以来对数据库的更改。如果这是第一个(假设您从一个空数据库开始),它还将生成一个名为“__MigrationHistory”的系统表,用于跟踪哪些迁移已应用于数据库。

Update-Database -script

使用 -script 标志执行 Update-Database 将生成一个 SQL 脚本,您可以在需要时将其保存/签入到源代码控制中。如果您只想在没有脚本的情况下更新数据库本身,只需去掉 -script 标记。

确保您在 web.config 中有一个连接字符串,其名称与您的上下文类相同(本例中为“DatabaseContext”)。这可以指向您现有的数据库,但它只会管理/跟踪对您的上下文类中定义的实体的更改。我发现有时在使用 Add-Migration 和 Update-Database 命令时需要显式定义上下文,如下所示:

Add-Migration "Description of your migration" -connectionstringname "DatabaseContext"
于 2013-06-20T20:32:40.670 回答
2

是的,设计是可能的。这里是官方教程

http://msdn.microsoft.com/en-us/data/jj591621.aspx

请参阅“构建初始模型和数据库”部分

注意:如果您的数据库已经存在,您可以将您的 dbcontext 类命名为该数据库,或者在连接字符串中指定“初始目录”以匹配您的数据库。

于 2013-06-20T20:20:30.173 回答
0

您可以简单地创建一个类似于您的表的类

 public class Person{
public Guid id {get;set;};
public string Name {get;set;};
}

然后你可以添加一个 ADO.NET 数据实体模型类型 codefirst 空数据库然后将类添加到该数据库中

在 db 中添加一个 ctor

static myDB(){
Database.setInitializer(new DropCreateDataBaseIfModelChanges<myDB>());
}


public virtual dbset<Person> People {get;set;};

之后您的数据库将被创建

于 2017-02-19T18:15:33.133 回答