gpt4 book ai didi

c# - 将实体(和相应的表)添加到 EF DB-first 模型

转载 作者:行者123 更新时间:2023-11-30 19:57:58 26 4
gpt4 key购买 nike

我是 Entity Framework 的新手:我从数据库优先模型开始维护使用 EF 和普通旧 SQL 的奇怪混合创建的应用程序。

我创建了自己的全新 DB-first 模型,我对此很满意。今天我的老板让我添加一个新实体。缺少外键简化了场景。

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

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

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

我知道它只是针对单个表,所以我可以简单地“从模型生成数据库”以获得完整的 SQL 脚本,找到我想要的表,将其运行到数据库并“从数据库更新模型”,这样 EF 就会查看表格,但是

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

最佳答案

您表示您采用的是数据库优先设计,但似乎是以代码优先的思维方式开展工作。

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

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

数据库优先不具备支持实体层建表的能力。数据库的改变总是一种方式,从数据库到实体模型,因此才有“数据库优先”的说法.

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

关于c# - 将实体(和相应的表)添加到 EF DB-first 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28239878/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com