问题标签 [ef-code-first]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
entity-framework - 如何在 EF Code First 中单数化我的表?
在命名我的数据库表时,我更喜欢使用单数名词。然而,在 EF 代码中,生成的表始终是复数。我的 DbSet 是复数形式,我相信这是 EF 生成名称的地方,但我不想将这些名称单数化,因为我认为在代码中使用复数形式更为实用。我也尝试过覆盖设置,但无济于事。
有任何想法吗?这是我的代码,谢谢。
MyObjectContext.cs
asp.net-mvc - MVC3/CTP5/ViewModel/Master-Detail
我试图在代码优先的方法中争吵,但我在这里的理解存在差距。我有一系列帖子和文件。
而且我认为我的 ViewModel 如下所示
列表和显示一切正常……但是当我尝试创建新帖子和文件时,一切都崩溃了。我试过使用 ViewModel,但我不确定如何将项目添加到视图模型的列表中。
我根据我的“帖子”创建了一个视图,然后有一个部分视图可以上传文件并将它们的列表保存在一个隐藏字段中我可以让一切正常工作,我只是不确定这是否是一个优雅的解决方案。
有人可以让我知道我是否离基地很远......我希望开始车队并希望收集一些对其他菜鸟有帮助的回复。
c# - Entity Framework CTP5 Code First:使用非原始类型作为键
我有一个项目,它有很多数据结构,我想在其中引入一个数据库。我正在研究 Entity Framework CTP5 的代码优先功能。
现在,我为我的每种类型使用了不同的标识符类型(例如 TypeAIdentifier、TypeBIdentifier 等)。这很好,因为它在使用这些标识符时允许类型安全。问题是我似乎无法让 EF 使用非原始类型作为标识符。http://blogs.msdn.com/b/efdesign/archive/2010/03/30/data-annotations-in-the-entity-framework-and-code-first.aspx中有提示:
实际上,以下程序会引发异常:
奇怪的是,这个程序抛出了一个 MissingMethodException (“没有为此对象定义无参数构造函数”),但我确信这与 KeyAttribute 有关,因为以下任一情况都会使程序运行:
- 删除[键];或者
- 将 [Key] 移动到 IntValue。
如何让 EF 将我的标识符类映射为 PK?想到的两个选项:
- 想办法让 EF 使用非原始类型作为 PK。
- 将“int”作为 PK 并让 EF 将此“int”转换为 MyIdentifier(这样做的缺点是,如果我决定使用“int”以外的其他东西,我将不得不同时更新 MyIdentifier 和映射,但它至少会让我保持标识符类型的安全性)。我认为 Function Imports 会让我这样做,但它似乎是建立在存储过程之上的。
有没有办法做到这一点?
c# - EF代码第一次自动外键关联问题
我首先通过本教程基本掌握了最新版本的 EF 代码 - http://www.asp.net/mvc/tutorials/getting-started-with-mvc3-part4-cs但我有点困惑关于一个方面,想知道是否有人可以阐明它?解释一下 - 有一个名为“Site”的类,我希望有一个名为“HomePageId”的字段,然后应该映射到具有该 ID 的“SitePage”对象。看起来很简单?但是当 EF 创建 Db 和关系时,它似乎并不理解这一点。我确定这是我做错了 - 这是代码:
正如您所期望的那样,“SitePage”类将关系生成回“Site”。但是我在两个表中的列方面不仅没有意义,而且代码方面的关系也没有按预期工作。(例如,当我给“Site”一个“HomePageId”时,该站点的“HomePage”为空。
显然,在文档方面几乎没有,因为这仍在开发中,但只是想知道是否有人有任何想法?我需要开始用属性装饰属性吗?还是我要求它理解一些它永远不会理解的东西?!
提前感谢大家。无论如何,我会坚持下去,并将我发现的任何东西发回。抢
entity-framework - EF Code First 中自引用外键的语法是什么?
我正在尝试将外键从 SpouseId 引用到 Contact 表中的 Id。这样做的语法是什么?我似乎找不到一个例子。谢谢。
我有这样的课:
EDIT1 根据 Joel Cunningham 提供的链接和 Morteza 的回答,我添加了一些额外的代码。
ContactMap.cs
MyObjectContext.cs
注意:我还在 Contact 类中的 Spouse 属性中添加了“[ForeignKey("SpouseId")]”属性。不幸的是,我不断收到“序列包含多个匹配元素”。
EDIT2: Morteza 下面的答案是正确的。总结一下:对于自引用外键,您可以将属性标记为“[ForeginKey("SpouseId")] 或使用下面的流畅 API 示例。我在一些评论中报告的错误是由我的单元测试引起的。EF以正确的方式生成数据库。我找到了一个很好的链接,其中Craig Stuntz概述了为什么自动增量键和自引用外键会导致“无法确定相关操作的有效排序”错误。我相信这是我的问题是。希望这对某人有帮助。
entity-framework - 使用代码优先 EF CTP5 生成货币类型字段
在这篇博文中:EF4 Code First Control Unicode and Decimal Precision, Scale with Attributes中,Dane Morgridge使用属性来控制数据库上不同类型的创建。
...我发现这个非常独特的顺便说一句!
如何使用 EF CTP5 的代码优先 API 在生成的数据库中生成货币类型字段,如果可以从您的模型中使用约定或属性来生成?
对不起,我的英语不是我的主要语言。
提前致谢。
entity-framework - 实体框架代码优先映射如何反映域驱动设计?
我希望将实体框架代码优先用于新项目。所以我决定做一些研究并构建一些演示,以便我可以看到它是如何做的。通过,我有一个主要问题,或者可能是我不清楚的更多问题,涉及实体框架代码优先映射到实体和域驱动设计的方式。
在构建应用程序时,我们定义了域实体。(我们根据我听到的业务情况定义聚合根并为它们创建存储库)
没关系,但实体框架代码优先映射似乎像实体之间的关系方式一样工作。那么两者如何能够共存呢?
举个例子(在领域驱动设计方面思考):
Journal 包含 JournalEnty 包含 任务、问题、注释
斜体字是实体。在分析之后,我会以某种方式说期刊是聚合期刊和日记条目的聚合根,因为这是一个直接组合。每个任务都包含一个小时值,以了解完成任务所需的时间,因此有很多方法可以计算总小时数以及由此产生的薪水。日记帐具有小时费率属性。
其他实体每个都是聚合根,它们可能具有对日志条目的引用,因此我们知道任务、注释和问题所属的位置。
但是问题来了.. Entity Framework Code-First 映射如何反映这一点?从直观的角度来看,我们会说日记包含日记条目,日记条目包含笔记、问题和任务。但从 DDD 看来,情况可能并非如此。如果我错了,请纠正我,但代码优先就像关系数据库一样工作。
那么我们如何在代码优先中映射上面的示例呢?
十分感谢。
.net - 从 EF Code-First DbContext 类生成 SQL CE 数据库
我以实体框架代码优先约定的风格定义了一组类,并使用 System.ComponentModel.DataAnnotations 属性对类属性进行了注释。
现在我想从此代码生成一个 SQL Server Compact Edition (SCSE) (4.0) 数据库。
执行此操作需要哪些代码以及需要导入哪些程序集?
到目前为止,我已经导入了 C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v4.0\Desktop{System.Data.SqlServerCe.dll,System.Data.SqlServerCe.Entity\System.Data.SqlServerCe。 Entity.dll} dll 文件。
任何指针表示赞赏。文章什么的。
c# - 将遗留的专有 Web 应用程序重写为 MVC3/实体代码优先
几个月来,我发布了一些关于 ASP.NET 应用程序和数据库抽象层的结构的问题,目的是重写(从头开始)一个遗留的 Web 应用程序。我最近偶然发现了 MVC3/Entity-Code-First,在花了一些时间使用它之后,我爱上了它的工作原理,事物是如何抽象出来的,我正在寻找任何使用它的借口!
遗留应用程序是一个 C++/CLI windows 服务,它生成它自己的 HTML(非常老式的 HTML,CSS 仅用于颜色和表格),并且界面与业务逻辑非常紧密地耦合。基本上,任何事情都会有所改善。
然而,也许这是因为我还没有花足够的时间在 MVC 上,我有一些挥之不去的疑问,并想知道你们中的一些 MVC 专业人士是否可以将他们的经验转向我的方向。
旧版应用程序使用自定义控件(它自己的形式)将组合框绑定到数据,并根据另一个中的选择动态重新填充相关的组合框。在 ASP.NET 中,这个问题很容易回答,因为只需抛出一个
asp:DataList
页面上的控件,将其绑定到数据源,瞧。一些简单的代码允许您然后过滤所选值的其他组合框。在 ASP.NET 中也很容易实现另一个数据列表,甚至以这种方式自动化依赖数据(这将很好地模仿遗留应用程序的行为)。我似乎无法在 MVC 中找到自定义控件的概念,尽管我认为这种东西是由 jQuery 调用处理的,以获取数据并将其放入组合框中。但这是否适用于每个页面上的每个组合框?这是传递适当参数的局部视图的情况,还是这只是愚蠢的?我想这更多地与实体框架有关,而不是 MVC,但我在网上找到的大多数示例和教程都执行 LINQ 查询以返回要显示的对象集合,例如,来自 MvcMovie 示例:
然后使用
@foreach
在视图中循环。这一切都很棒。遗留应用程序有一个浏览页面,供系统的所有其他区域使用(超过 50 个)。它通过检查为登录用户定义的列顺序、展平任何外键(以便显示外表上的字段而不是非用户友好的主键值)并允许用户应用自定义过滤器到任何列。它也适用于行数超过 100k 的表。如何使用实体框架和视图编写类似的东西?在 ASP.NET 中,我可能会通过动态生成某种网格视图并让它自动生成列并应用过滤器来解决这个问题。这似乎让我在 MVC 中工作更多。我错过了什么?遗留应用程序有几个对大量数据进行操作的操作。现在因为它是一项服务,它可以启动这些线程而不必担心被关闭。我在 SO 上的一个问题是关于静态管理器的存在以及 AppPool 回收的引入,但我认为拥有辅助服务是一个不错的选择。也就是说,旧版应用程序将更新语句应用于大型记录组而不是单行。Entity-Framework 是否可以在不针对绕过正常模型的数据库编写自定义 SQL 的情况下实现这一点?我希望我不必做这样的事情(不是我愿意,这只是示例)
我怀疑这可能需要很多时间,而旧版应用程序只会这样做:
所以我并不完全清楚我们如何以这种方式使用我们的模型。
旧版应用程序的布局中有一些数据面板,可以在您所在的任何页面上进行。在 Stackoverflow 上查看这里,我发现了这个问题,这意味着每个视图都需要将这些信息传递给布局?是这样,还是有更好的方法?理想情况下,我希望我的布局能够访问特定的模型/存储库并在侧面板中显示数据。添加到每个视图页面可能会非常重复并且容易出错。更不用说如果我需要修改某些东西需要花费的时间。局部视图可以在这里做,但我再次不确定如何在布局页面上将模型传递给它。
最后,我很失望,在安装了 Ef-Code-First 之后,发现一个非常好的属性,
SourceName
还没有进入。这在映射遗留表/列时会非常好,我不完全确定为什么此时它被遗漏了(至少,我的智能感知器说它不存在!)有没有人知道什么时候会发生这种情况?我可以暂时不用它,但最终它会非常有用。
对不起,冗长的问题。经过多年对 ASP.NET 和 MVC3 的调查工作,我真的很想使用 MVC3!
c# - 实体框架 4:代码优先 - 在另一个模式中创建数据库?MapSingleType?
我有一个数据库,我正在使用两种不同的模式。模式就像命名空间(如果我错了,请纠正我)。这样,我有一个数据库和两个模式,因此一个模式中的表可以与另一个模式中的表命名相同,因为它们位于不同的模式中。
如何让 EF 代码首先与不同的架构而不是默认架构交谈?
它与 MapSingleType 和覆盖方法有关还是我可以做其他事情?