将实体(和相应的表)添加到EF DB优先模型

usr*_*ΛΩΝ 2 c# sql-server ef-database-first ef-model-first entity-framework-6.1

我对Entity Framework很陌生:我从数据库优先模型开始,维护一个使用EF和普通旧SQL混合创建的应用程序.

我创建了自己的新的DB-first模型,我很好.今天我老板让我添加一个新实体.缺少外键简化了方案.

我在图中创建了我的新实体(它由我刚创建的复杂实体的三个实例组成)但现在我必须创建一个增量DB脚本来创建新表.我应该这样做,为MySQL和SQL Server,但让我们开始第二.

所以现在我看到我有一个编译问题"没有实体映射Entity",如果我使用"从数据库更新模型"命令,我看不到更改送到DB的选项,但这听起来是正确的,因为单词"from".

好的,我试图从右键菜单中单击"表映射",我找到了将实体映射到表的选项.我打算在"添加表或视图"字段中键入新表名,然后......等待!我只能选择现有的表格

我理解它仅适用于单个表,因此我可以简单地"从模型生成数据库"以获取完整的SQL脚本,找到我想要的表,运行到DB并"从DB更新模型",以便EF看到表格,但是

我想了解如何使用Entity Framework创建增量脚本.这是我的问题.

Ger*_*vis 7

您表明您拥有数据库优先设计,但似乎是基于代码优先的思维模式.

在数据库优先设计中,实体模型从属于底层数据存储.模型的更改(或至少更改模型,也需要更改基础数据存储)在数据库上首先发生.

那么如何为实体创建新表? 您在数据库中创建新表(CREATE TABLE ...).然后使用"从数据库更新模型"向导,从"添加"选项卡中选择新表. EF将自动创建相应的EF类.如果你已经手动创建了实体,你应该删除它,否则你最终会得到一些奇怪的实体命名(即Customer1).

数据库首先没有能力支持实体层的表创建. 对数据库的更改始终是从数据库到实体模型的一种方式,因此术语"数据库优先".

另一方面,如果您更习惯直接创建实体并希望从一组实体构建数据库,那么您应该寻求创建"代码优先"设计.尽管名称"代码优先",但可以从现有数据库中获取初始的实体类集.术语"代码优先"是指对db/model结构的更改的起源.