yabo官网Entity Framework Power Tool Tips to View Model (A Feature I Depend On!)

在使用实体框架的代码和dbContext类定义模型时yabo官网,我找到了“视图模型”feature of the yabo官网Entity Framework Power Tool completely indispensable.没有它,我只*认为*我知道我告诉EF我的模型应该是什么,但是我不知道代码首先如何解释我提供的信息(类结构,DB集,配置)。

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

    公众的 CustomerServiceContext : DbContext      {公众的数据库集
         
          Customers { get;集合;}      }
         

But because of relationships from Customer to other types and their relationships to even other types,using it's base rules (convention) Code First interprets your entire model as

形象

映射混淆的另一个常见点是关系。能够可视化代码如何首先解释模型,可以告诉我在哪里,for example,I've attempted to define a 1:1 relationship but in fact,我已经定义了一个1:0..1,它将在我的应用程序中真正产生问题。

I use the tool to show me where I haven't configured things properly and fix my mappings (via convention or configurations) until the visual model aligns with my intention.

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

当前,该工具是作为Visual Studio的扩展安装的。它叫yabo官网实体框架电动工具测试版3and it works even wtih the latest update to VS (Visual Studio 2012 Update 2).

虽然还有其他功能,安装工具后,you can point to any class that inherits from DbContext,右键单击并查看“实体框架”yabo官网在上下文菜单上。Select yabo官网Entity Framework and you'll see four options.My focus is on the first of these "View Entity Data Model (Read-only).

SNAGHTMLb0b6d0b

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

设计师问题!=建模问题

如果你的模型有问题,您将在输出窗口中收到一条有用的错误消息。This is about what's wrong with your mappings.One common one is you tried to create a one to one mapping but haven't given code first enough detail (e.g.它需要知道哪一个是主体,哪一个是从属)。

The focus of this blog post however is problems I encounter with getting the tool to perform it's task.

Most Common Reason that the Designer Fails: Can't Find the Connection String

Even though the designer is not going to touch the database to generate the view,它仍然需要访问连接字符串。

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

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

Another is"Exception has been thrown by the target of an invocation".

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

这就是设计师不工作的原因。It's a bit of a pain because you don't really want to set things up for the designer,但对于调试模式。启动项目是否可执行并不重要。它只是一个带有配置文件的项目,在配置文件中,ef将查找的有效连接信息(实体框架部分中的连接字符串或连接信息)。yabo官网

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

This is my A#2 reason the designer won't work.I like to organize my solutions.I organize projects into solution folders and I organize code into project folders.如果配置文件在文件夹中,设计师找不到。

我成功的典型设置

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

形象

所以当我需要查看模型时,只要我记得在我的解决方案中将该项目设置为启动项目,the designer is able to do it's job.下面是一个将此方法用于甚至不直接继承dbContext的上下文的示例。它继承自我自己的类“baseContext”从dbContext继承。The designer is able show me the visual model even with this extra abstraction.

SNAGHTML07A092

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

Thanks to Ethan in comments for pointing out this one.I actually had it the day *before* I wrote this post and had forgotten (short term memory issues…old age…excuses excuses ).

‘A constructible type deriving from DbContext could not be found in the selected file'.

这是误导,因为像伊桑一样,the fact that I was deriving from BaseContext led me to believe that *this* was the cause for not being able to find the DbContext type.但是,将CustomerServiceContext更改为直接继承dbContext并没有解决我的问题。

我发现此StackOverflow线程关于此错误消息,包含来自的响应布莱斯·兰伯森英孚团队提出了一个Visual Studio扩展的问题。我刚添加了两个扩展名来检查我的代码和注释。一个是HTML拼写检查器(from Microsoft),另一个是多语言拼写检查器(also from someone at Microsoft).所以我想我会一次禁用一个,看看是不是罪魁祸首。我碰巧选择了HTML拼写检查器来禁用first和voila,the View Entity Data Model tool worked again (after a VS restart).幸运的是,第二个扩展是我真正想要的。我相信这个问题将在我们在EF6中集成工具时得到解决。

报名参加my newsletter所以你不要错过我的会议和多元化课程公告!

36 thoughts on "yabo官网Entity Framework Power Tool Tips to View Model (A Feature I Depend On!)

  1. OK,获取“在所选文件中找不到从dbContext派生的可构造类型”。我不明白。The context I am trying to map derives from my BaseContext and Base Context derives from Dbcontext.

  2. Oh my gosh,I had that just yesterday.我真不敢相信我没有加进去。你能相信它来自我添加的Visual Studio扩展吗?当我禁用扩展时,问题解决了。The extension was HTML Spell Checker.在阅读了布莱斯(他在英孚团队)的回复后,我才意识到这一点:stackoverflow.com/…/a-可构造

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

  4. I was having trouble getting the EF Power Tools Beta 3's View Entity Data Model (Read-Only) feature to work in with VS2010.I resolved the "constructible type deriving from dbcontext could not be found in the selected file"禁用所有其他vs扩展时出错。然后我开始得到类似“找不到元素“entityframework”的架构信息”的错误。事实证明,当您首先从数据库执行反向工程代码时,ef pt beta3会将entityframework.dll版本6.0.0安装到空项目中。稍后尝试查看dbContext的实体数据模型(只读)时,只读EDMX文件是使用与VS2012兼容但与VS2010不兼容的EDMX版本3的架构构建的。I used NuGet to replace yabo官网Entity Framework 6.0.0 in my project with the latest stable version (4.4.0).Now the temporary EDMX file is created using schema version 2,与VS2010一起工作。希望这能帮助其他仍在使用VS2010的用户。

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

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

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

  6. 我创建了一个MVC 5应用程序,然后首先使用EF6.1代码和SQL Server Express上的现有数据库。当我试图创建视图时,我正在使用“新脚手架项目…”then selecting the "MVC 5 controller with views,using yabo官网Entity Framework."我选择模型和上下文类,然后单击“确定”。然后出现以下错误消息,未创建任何代码。I've uninstalled EF Power Tools with the same error.

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

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

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

    谢谢你的帮助。

  8. Great to hear,托尼。Although IMHO that hack shouldn't be necessary.看来脚手架就是不懂流利的配置。我的猜测(现在没有时间进行实验)是,上下文不是由Power工具创建的,但是,Fluent配置代码的存在造成了冲突。是否必须对EF6.1设计器创建的上下文使用相同的解决方案?

  9. 我现在正在使用VS2013,无法再找到要安装的EF电动工具。我以前一直用它。What is the best way to make an Entity Data Model diagram now?

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

    Error Message: A constructible type deriving from DbContext could not be found in the selected file.

    我读过,here in this thread and some others,此错误可能与VS扩展有关,禁用某些扩展可以解决此问题。Many of the current extensions in VS cannot be disabled.在“说明”中说“您需要使用Windows控制面板中的“程序和功能”窗格删除此扩展名。”However,我在控制面板上看不到这些。我在stackoverflow上找到一篇建议在PowerShell中禁用的文章。Since my only experience with PowerShell has been limited to using it within the Package Console for testing some Code First Migrations,我想在我提出更多问题之前,我会寻求一些建议。

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

    我使用的是vs Premium 2013
    EF6.1.1
    EF Power Tools Beta 4

    有什么建议吗?

  11. 朱莉

    I've created a sample solution to narrow this down…
    I'm working on a solution with several bounded contexts,as you've described them.
    我的实体与它们的模型在不同的项目中。

    在我的解决方案中,I have:

    FOO–实体
    foo.模型-参考foo,yabo官网Entity Framework
    – FooContext : DbContext

    酒吧-实体
    Bar.Model – references Bar,yabo官网Entity Framework
    –barcontext:数据库上下文

    启动
    – App.config

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

    Also,curiously,如果无法查看实体数据模型(只读)的数据库上下文是IdentityContext,我没有错误对话框,but a note in the output: "A constructible type deriving from DbContext could not be found in the selected file."

    如果我将实体移动到模型项目中,all is well,but now my entities are not agnostic of yabo官网Entity Framework.

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

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

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

    1. 嘿,Matt,
      伊克斯不确定我头上的这个。我从未被强迫将我的域类移动到与我使用这个工具的上下文相同的项目中。我经常进行这种设置。I think you're going to need someone to look at it with you.Also,deep apologies for missing your comment.我知道已经3周了,所以希望你已经解决了,我有兴趣知道问题和解决方案是什么。

  12. I just spent a couple of hours trying to get rid of the "Exception has been thrown by the target of an invocation"尝试查看我的代码第一个上下文的模型时弹出。所有的引用和连接字符串似乎都是正确的。

    Turned out that in my App.config file I had:
    [EntityFramework codeconfigurationType=“mysql.data.entity.mysqlefconfiguration,mysql.data.entity.ef6“]

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

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

    1. 哇!thanks.moved the blog (over a year ago) and some of the redirects just aren't working.Thanks for pointing this one out.

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

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

    internal class MyContext : DbContext
    {
    //Both Migrations and EF PowerTools were okay with this…
    public myContext():base(“name=myCanStringName”)。

    //Migrations was okay with this,但是ef powertools抛出“对象引用未设置为对象的实例”in a dialog box… Very confusing :s
    public MyContext() : base(ConfigurationManager.ConnectionStrings["ConfigMgr"].ConnectionString)

留下答复

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

This site uses Akismet to reduce spam.Learn how your comment data is processed.