查看模型的实体框架电动工具提示(这是我所依赖的功能!)yabo官网

在使用实体框架的代码和dbContext类定义模型时,yabo官网我找到了“视图模型”实体框架的功能是电动工具不可或缺的。yabo官网没有它,我只*认为*我知道我告诉EF我的模型应该是什么,但是我不知道代码首先如何解释我提供的信息(类结构,数据库集,配置)。

例如,我可以有一组类,但dbContext只指定一个dbset:

公众的CustomerServiceContext: DbContext {公众的数据库集
         
          客户{得到;集合;}}
         

但由于客户与其他类型的关系以及他们与其他类型的关系,使用它的基本规则(约定)代码首先将整个模型解释为

形象

映射混淆的另一个常见点是关系。能够可视化代码如何首先解释模型,可以告诉我在哪里,例如,我试图定义一个1:1的关系,但事实上,我已经定义了一个1:0..1,它将在我的应用程序中真正产生问题。

我使用这个工具来显示我没有正确配置的地方,并修复我的映射(通过约定或配置),直到可视化模型符合我的意图。

所以没有这个工具我真的活不下去,我把它展示给所有我能展示的人。

当前,该工具是作为Visual Studio的扩展安装的。它叫实体框架电动工具测试版3yabo官网而且它甚至可以在最新的vs更新中工作(Visual Studio 2012更新2)。

虽然还有其他功能,安装工具后,可以指向从dbContext继承的任何类,右键单击并查看“实体框架”yabo官网在上下文菜单上。选择Entity Framework,您将看到四个选项。yabo官网我的重点是其中的第一个“视图实体数据模型(只读)”。

SNAGHTMLb0b6d0b

但有一半的时间我展示它,它不起作用,我总是做错事,忘记了。

设计师问题!=建模问题

如果你的模型有问题,您将在输出窗口中收到一条有用的错误消息。这是关于映射的问题。一个常见的问题是,您试图创建一对一的映射,但没有给代码足够的细节(例如它需要知道哪一个是主体,哪一个是从属)。

然而,这篇博客文章的重点是我在使用该工具执行任务时遇到的问题。

设计器失败的最常见原因:找不到连接字符串

即使设计者不打算触摸数据库来生成视图,它仍然需要访问连接字符串。

但当它找不到的时候,它并不总是告诉您它找不到连接字符串。

通常,我会收到一条错误消息,上面说:“序列不包含匹配元素”。

另一个原因是“调用的目标引发了异常”。

设计器在解决方案的启动项目中查找连接字符串

这就是设计师不工作的原因。这有点痛苦,因为你不想为设计师设计,但对于调试模式。启动项目是否可执行并不重要。它只是一个带有配置文件的项目,在配置文件中,ef将查找的有效连接信息(实体框架部分中的连接字符串或连接信息)。yabo官网

设计器将不在解决方案或项目文件夹中查找

这是我的第二大理由,设计师不会工作。我喜欢组织我的解决方案。我将项目组织到解决方案文件夹中,并将代码组织到项目文件夹中。如果配置文件在文件夹中,设计师找不到。

我成功的典型设置

所以我的解决方案中有一个单独的项目,它不在文件夹中,只是为了帮助我使用这个关键的设计器工具。感谢沃恩·弗农帮助我为这个项目找到了一个比我一直使用的更好的名字,这很明显这与我的应用程序一点关系都没有。

形象

所以当我需要查看模型时,只要我记得在我的解决方案中将该项目设置为启动项目,设计师有能力完成这项工作。下面是一个将此方法用于甚至不直接继承dbContext的上下文的示例。它继承自我自己的类“baseContext”从dbContext继承。即使有了这个额外的抽象,设计师也能够向我展示可视化模型。

斯奈特MLB07A092

另一个与连接字符串无关的奇怪错误:“可构造类型…”

感谢Ethan在评论中指出了这一点。事实上,我在写这篇文章的前一天就有过这样的经历,但是我忘记了(短期记忆问题……年老……借口借口)。

在选定的文件中找不到派生自DbContext的可构造类型。

这是误导,因为像伊桑一样,我从BaseContext派生的事实使我相信*this*是无法找到DbContext类型的原因。但是,将CustomerServiceContext更改为直接继承dbContext并没有解决我的问题。

我找到了此StackOverflow线程关于此错误消息,包含来自的响应布莱斯·兰布森英孚团队提出了一个Visual Studio扩展的问题。我刚添加了两个扩展名来检查我的代码和注释。一个是HTML拼写检查器(微软),另一个是多语言拼写检查器(同样来自微软)。所以我想我会一次禁用一个,看看是不是罪魁祸首。我碰巧选择了HTML拼写检查器来禁用first和voila,视图实体数据模型工具再次工作(在VS重启之后)。幸运的是,第二个扩展是我真正想要的。我相信这个问题将在我们在EF6中集成工具时得到解决。

注册我的新闻稿所以你不要错过我的会议和多元化课程公告!

36“思考”查看模型的实体框架电动工具提示(这是我所依赖的功能!)yabo官网

  1. 好吧,获取“在所选文件中找不到从dbContext派生的可构造类型”。我不明白。我试图映射的上下文来自我的BaseContext,而基本上下文来自Dbcontext。

  2. 哈哈。不,我只安装了两个,所以我禁用的第一个就成功了。不过我还是很怀疑。我不喜欢这样的巧合。是那个特定的扩展还是关于安装扩展?

  3. 我在使EF Power Tools Beta 3的视图实体数据模型(只读)特性与VS2010一起工作时遇到了麻烦。我解决了“在选择的文件中找不到从dbcontext派生的可构造类型”的问题。禁用所有其他vs扩展时出错。然后我开始得到类似“找不到元素“entityframework”的架构信息”的错误。事实证明,当您首先从数据库执行反向工程代码时,ef pt beta3会将entityframework.dll版本6.0.0安装到空项目中。稍后尝试查看dbContext的实体数据模型(只读)时,只读EDMX文件是使用与VS2012兼容但与VS2010不兼容的EDMX版本3的架构构建的。在我的项目中,我使用NuGet将实体框架6.0.0替换为最新的稳定版本(4.4.0)。yabo官网现在使用模式版本2创建临时EDMX文件,与VS2010一起工作。希望这能帮助其他仍在使用VS2010的用户。

    PS–在Julie的一门伟大的多元化课程中学习了这个工具–在企业应用程序中使用EF。棒极了!

  4. 首先……好消息,朱莉。自从我发现你的英孚课程时就一直跟着你。第二…如果我告诉你关闭vs和删除.suo文件有助于我“调用的目标抛出了异常”。我实现了对dbContexts的所有建议,每当我更改模型并尝试查看edmx时,就会显示此消息。

    尚未测试,但可能不需要删除SUO文件。只是想让你们知道。

  5. 我在使用ef powertools beta4的vs2013中遇到了这个问题。我试过禁用扩展,但诺兴让这个问题消失了?

  6. 我创建了一个MVC 5应用程序,然后首先使用EF6.1代码和SQL Server Express上的现有数据库。当我试图创建视图时,我正在使用“新脚手架项目…”然后选择“带有视图的MVC 5控制器,使用实体框架。”yabo官网我选择模型和上下文类,然后单击“确定”。然后出现以下错误消息,未创建任何代码。我卸载了EF电动工具,同样的错误。

    误差
    运行所选代码生成器时出错:
    “调用的目标引发了异常。”

    还有其他可能导致这个错误的想法吗?

  7. 你好,托尼,

    我也有同样的问题。你能修好这个吗?
    我正在运行带有update 2的Visual Studio 2013。

  8. 不,我还没试过EF6.1设计师。我确实设法通过注释掉每个SO助手在onModelCreating()函数中的代码来让脚手架工作。

    谢谢你的帮助。

  9. 很高兴听到,托尼。尽管我不需要那个黑客。看来脚手架就是不懂流利的配置。我的猜测(现在没有时间进行实验)是,上下文不是由Power工具创建的,但是,Fluent配置代码的存在造成了冲突。是否必须对EF6.1设计器创建的上下文使用相同的解决方案?

  10. 我现在正在使用VS2013,无法再找到要安装的EF电动工具。我以前一直用它。现在制作实体数据模型图的最佳方法是什么?

  11. 我无法用电动工具解决这个错误,我真的希望能够查看我的数据模型。

    错误消息:在所选文件中找不到从dbContext派生的可构造类型。

    我读过,在这条线和其他一些线中,此错误可能与VS扩展有关,禁用某些扩展可以解决此问题。VS中的许多当前扩展都不能禁用。在“说明”中说“您需要使用Windows控制面板中的“程序和功能”窗格删除此扩展名。”然而,我在控制面板上看不到这些。我在stackoverflow上找到一篇建议在PowerShell中禁用的文章。由于我对PowerShell的唯一体验仅限于在包控制台中使用它来测试某些代码优先迁移,我想在我提出更多问题之前,我会寻求一些建议。

    当前在vs中的扩展名:
    以下是扩展和更新中列出的项目:
    行为SDK(XAML)
    实体框架电动工具测试版4yabo官网
    用于Visual Studio的Microsoft广告发布中心服务
    用于Windows 8.1的Microsoft广告SDK
    用于Windows Phone 8.1 XAML的Microsoft广告SDK
    Microsoft ASP.NET和Web工具
    Microsoft Visual Studio ASP.NET MVC 5脚手架
    用于Visual Studio 2013的Nuget包管理器
    目视F 3.1
    用于JavaScript的Windows库的Visual Studio扩展
    Windows Phone 8.1 SDK集成
    工作流管理器活动

    我使用的是vs Premium 2013
    参考6.1.1
    EF电动工具测试版4

    有什么建议吗?

  12. 朱莉

    我已经创建了一个示例解决方案来缩小这个范围…
    我正在研究一个具有多个有界上下文的解决方案,正如你所描述的。
    我的实体与它们的模型在不同的项目中。

    在我的解决方案中,我有:

    FOO–实体
    foo.模型-参考foo,实体框架yabo官网
    –fooContext:dbContext

    酒吧-实体
    条形图模型-参考条形图,实体框架yabo官网
    –barcontext:数据库上下文

    启动
    ——App.config

    当我第一次启动Visual Studio(2012/2013)时,我选择首先从代码中查看实体数据模型(只读)的第一个DB上下文成功地实现了这一点。之后,任何数据库上下文都无法查看实体数据模型(只读),我得到一个错误消息框,显示“找不到文件或程序集”[各自的实体项目名称],1.0.0.0版本,文化中立,PublicKeyToken=null'或其依赖项之一。系统无法找到指定的文件。”我必须重新启动Visual Studio以获取EF Power Tools以查看其他实体数据模型(只读)。这真的很不方便。

    同时,奇怪的是,如果无法查看实体数据模型(只读)的数据库上下文是IdentityContext,我没有错误对话框,但输出中有一条注释:“在所选文件中找不到从dbContext派生的可构造类型。”

    如果我将实体移动到模型项目中,一切都好,但是现在我的实体并不不知道实体框架。yabo官网

    我禁用了所有可以禁用的扩展。我正在使用EF6.1.1和EFPowertoolsBeta4。

    你经历过这个吗?是否有解决方案不影响我的解决方案设计?我是不是给自己挖了个不必要的洞?

    我在网上搜索了一个有效的解决方案。

    1. 嘿,马特,
      伊克斯不确定我头上的这个。我从未被强迫将我的域类移动到与我使用这个工具的上下文相同的项目中。我经常进行这种设置。我想你需要有人和你一起看。同时,对错过你的评论深表歉意。我知道已经3周了,所以希望你已经解决了,我有兴趣知道问题和解决方案是什么。

  13. 我花了几个小时试图摆脱"异常已被调用目标抛出"尝试查看我的代码第一个上下文的模型时弹出。所有的引用和连接字符串似乎都是正确的。

    结果在我的App.config文件中我有:
    [EntityFramework codeconfigurationType=“mysql.data.entity.mysqlefconfiguration,mysql.data.entity.ef6“]

    我添加了尝试调试其他内容,但没有删除。当替换为没有参数的普通[EntityFramework]时,它工作正常!

    我希望它能帮助别人避免损失几个小时!

  14. 视图实体数据模型不使用IdentityDBContext,我收到一条关于名称或连接字符串不能为空的消息。这是已知的bug吗?
    谢谢!!

  15. 嗨,朱莉,只是想警告一个破坏ef电源工具的Visual Studio插件。它是
    一个叫propman的小VSIX。手术后一切恢复正常。(2015)只是想把这个放在这里,以防有人遇到臭名昭著的“调用的目标抛出了异常”。安装此工具时遇到的问题。

  16. 谢谢你的指点,朱莉!它指出了问题所在——codefirst+powertools+解析连接字符串(vs2015)

    内部类MyContext: DbContext
    {
    //迁移和EF PowerTools都没有问题……
    public myContext():base(“name=myCanStringName”)。

    //迁移没有问题,但是ef powertools抛出“对象引用未设置为对象的实例”在对话框中…非常混乱:s
    public myContext():基(configurationManager.connectionStrings[“configust”].connectionString)

留下答复伊桑·肖弗取消答复

您的电子邮件地址将不会发布。已标记必需字段*

这个站点使用Akismet来减少垃圾邮件。了解如何处理您的评论数据.