EF CTP5 - 找不到“数据库优先”示例

Posted

技术标签:

【中文标题】EF CTP5 - 找不到“数据库优先”示例【英文标题】:EF CTP5 - Can't find "Database First" Examples 【发布时间】:2011-03-11 01:40:33 【问题描述】:

我是 CTP 的新手,刚刚下载了 CTP5。我有一个现有的数据库,在开发的迭代周期中,几个月来我一直在不断地重新生成我的 *.edmx 文件。最大的麻烦之一是每次我重新生成 *.edmx 文件时,我都必须手动进入并修复问题。一个巨大的时间浪费。例如,我有一个表,其中包含 BillingAddressID 和 HomeAddressID 字段,这两个字段都是我的地址表的 FK。当 EF 向导为我生成我的模型时,它们会以 Address 和 Address1 的形式出现。我必须手动进入设计器并将它们重命名为 BillingAddress 和 HomeAddress。

我希望借助 CTP5,我可以有人插入生成管道并在每次重新生成时自动修复模型。但是那里的所有示例似乎都是“代码优先”,我找不到任何如何插入“数据库优先”模型生成代码的示例。

这可以用 CTP5 完成吗?如果是这样,谁能给我一个教程或示例?

谢谢

【问题讨论】:

【参考方案1】:

我想知道您模型的哪些属性被重命名了?从数据库更新模型时,不会修改对实体 (CSDL) 所做的更改。只有对 SSDL(数据库描述)的手动更改会被覆盖。当然,如果您只是删除 EDMX 并让 VS 创建新的,您的更改就会丢失。

如果您想使用CTP5 features with EDMX,则可以使用与现在相同的 EDMX,因此如果您在 EDMX 处理方面遇到问题,此问题将持续存在。

【讨论】:

嘿@Ladislav。我的问题不在于对现有模型的更新,而在于模型的初始创建。我在使用模型浏览器的更新功能时遇到了很多问题,以至于当我更改数据库时,我完全重新生成了我的模型。您引用的 URL 仍然描述了代码优先的方法。我不想编写自己的与数据库匹配的类。我正在寻找完全从数据库生成我的 biz 类。我将所有自定义业务逻辑保留在部分类中。这个工作流程对我来说效果很好,只是在我试图补救的几个地方很耗时。 @sisdog: 1. 使用数据库更新。如果您以正确的方式使用它,它就会起作用。我几乎每天都在使用它,只是有一些小问题。 2. 再读一遍文章。它不使用代码优先。它使用 EDMX 并为您生成类。如果您不明白,请按照文章并自己尝试。【参考方案2】:

http://weblogs.asp.net/scottgu/archive/2010/08/03/using-ef-code-first-with-an-existing-database.aspx

它不会为您生成模型,codefirst 的重点是编写您自己的 POCO。但它确实支持 db-first 场景。

更新 我刚刚做了一个快速实验,发现在我重命名 EDMX 设计工具生成的列的情况下(根据您的问题示例),我仍然可以从数据库工具运行更新模型(右键单击在设计表面上,选择从数据库更新模型),它不会覆盖我的更改。

您不是在手动编辑生成的代码文件吗?

【讨论】:

原谅我,我刚刚开始关注 CTP。同样,那篇文章,就像我读过的所有文章一样,与从数据库生成我的对象模型没有任何关系。我使用 AFAIK 的实体数据模型向导,它仍然是一个可行的工具(对吗??)。它的全部目的是从 db 生成 biz 类,而我正在寻找一种方法来更好地控制向导创建我的对象! CTP对我没用吗? $MS 是否强迫其 EF 用户使用代码优先和 db-first 是运气不好? 我再说一遍,CodeFirst 不会为你生成模型。 CodeFirst 的point 是将您自己的模型编写为 POCO,然后让它们生成您的 DB,或者将它们连接到现有 DB。您仍然可以使用 EF 数据模型向导,但如果您没有使用 CodeFirst,那么您使用的是以前使用的相同工具,并且您会遇到与以前相同的问题。没有人强迫您使用 CodeFirst,它是一种替代方法,可能适用于您的开发风格/场景。 通过强制,我的意思是 CTP 似乎只对代码优先的人群有好处。 EF 工具包从一开始就支持 db-first,那么新特性和改进在哪里?当前的 db-first 工具有局限性,我正在流口水地看着我看到的代码优先的自定义功能,比如自定义代码生成的能力。我希望这将是并升级到整个产品。所以,我重新表述一下这个问题:EF 工具套件的下一个版本是否对现有的 db-first 工作流程有任何改进???? @Paul - 也许我没有足够清楚地描述我的问题场景。请参阅上面对@Ladislav 的回复,我正在从我的数据库中生成我的类,没有更新。 @sisdog,无意冒犯,但您似乎每次都在重新生成整个模型,这是在自取其辱。当然你会失去你的自定义......我对更新功能没有任何问题,我不确定你看到了什么,抱歉。

以上是关于EF CTP5 - 找不到“数据库优先”示例的主要内容,如果未能解决你的问题,请参考以下文章

在 VS2017 中找不到 ADO.net 实体数据模型模板

找不到命令“dotnet ef”

在 EF 6 中找不到 HasOne

zsh:找不到命令:dotnet-ef

找不到 EntityType 错误的 EF 映射和元数​​据信息

使用 EF4 的 POCO 模板时“找不到元数据信息”?