繁体   English   中英

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

[英]Adding an entity (and respective table) to EF DB-first model

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

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

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

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

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

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

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

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

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

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

数据库首先不具备在实体层支持表创建的功能。 从数据库到实体模型,对数据库的更改始终是一种方法,因此,术语“数据库优先”。

另一方面,如果您更愿意直接创建实体,并希望从一组实体中构建数据库,则应该寻求创建“代码优先”的设计。 尽管名称为“ code first”,但仍可以从现有数据库中获取一组初始的实体类。 术语“代码优先”是指对db / model结构的更改的起源。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM