问题标签 [entity-framework-ctp5]

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.

0 投票
1 回答
3394 浏览

entity-framework - 我在 DbContext 中看不到带有 POCO 类的存储过程

为什么我看不到在我的 DbContext 中添加的存储过程?DbContext 由随 CTP5 版本(带有 POCO 类)引入的模板生成。

我添加了本教程所述的存储过程:http: //thedatafarm.com/blog/data-access/checking-out-one-of-the-new-stored-procedure-features-in-ef4/

此外,我搜索了是否在我的上下文中添加了条目,结果如下:

一个类似的问题是:

为什么 EF4 不生成支持我的函数导入的方法?

但我已经做了所有的建议。

这是存储过程:

我错过了什么?

谢谢

0 投票
2 回答
14404 浏览

entity-framework-4 - 实体框架:使用 CodeFirst 设置删除规则

我正在使用 EF4 CTP 5,CodeFirst。

请先看我的课:

我的目标是为客户语言关系设置一定的“删除规则”。当一种语言被删除时,我不想删除相应的客人(所以没有级联删除)。相反,我希望客人的 LanguageID 为“Set NULL”。

我希望流畅的 API 在这里支持我。但是除了 .WillCascadeOnDelete(bool) 之外,我找不到任何有用的东西,它没有提供我需要的选项。我错过了什么吗?或者这只是没有在 CTP 5 中实现?

谢谢你的帮助!

0 投票
1 回答
1330 浏览

.net - Entity Framework CTP5 Code-First:如何在 Table-Per-Hierarchy 映射中指定鉴别器列的类型?

ADO.NET 团队的这篇博文以示例的形式展示了如何在 Entity Framework Code-First 的 Fluent API 中定义 Table-Per-Hierarchy 映射。这是(稍微简化的)示例:

...和TPH映射:

Type这里显然是数据库表中的一个“纯”鉴别器列,它在模型类中没有相关属性。这很好,我想要什么。

如果我让为此映射创建数据库表,则该列Type在 SQL Server 中的类型为nvarchar(MAX).

有没有办法在 Fluent API 中配置鉴别器列的类型?

例如:我有一个Type带有可能值的鉴别器列"A", "B" or "C"来区分我的派生模型类。如何配置 SQL Server 中的列具有类型varchar(1)

(我试图通过设置例如简单地使用字符值m => m.Requires("Type").HasValue('A')(注意单引号)。但这会引发一个异常,告诉我char不允许将类型作为鉴别器列。)

0 投票
1 回答
1619 浏览

entity-framework - 将 EF CTP5 与 Sql Server Compact Edition 4.0 一起使用时的 EntityFunctions.TruncateTime 替代方案

我在 Sql CE 4.0 中使用 EF CTP5 代码优先。我正在尝试在两个 DateTime 属性之间执行时间不敏感的日期比较。

由于 linq to entites 无法解析 DateTime.Date 属性(这会很好),因此解决方案是使用 EntityFunctions.TruncateTime,但这似乎不适用于 Sql CE 4.0。

我可以手动比较两个日期的年、月和日,这可行,但会使代码比应有的冗长得多。理想情况下,我不想更改我的查询以使用长手版本以使它们与完整的 sql server 和 sql ce 4.0 一起使用。

因此,有人对此有任何干净而聪明的解决方案吗?我认为解决方案可能涉及表达式重写,但我不太确定从哪里开始。

任何帮助是极大的赞赏,

保罗

0 投票
2 回答
1429 浏览

.net - 实体框架 CTP5 代码优先:将一个类与另一个类的多个集合映射

使用 EF CTP5 Code-First,我试图映射一个类模型,该模型包含一个类中的多个集合,指向另一个类。这是我的意思的一个例子:

如果我让数据库从此模型创建DbContext而无需进一步定制,如下所示:

...然后我在 SQL Server 中得到两个表,一个Companies只有一CompanyId列的简单表和一个People包含以下列的表(“FKRN”表示“外键关系名称”,由 EF 在 SQL Server 中创建):

CompanyId最后三列与表的主键都有外键关系Companies

现在我有几个问题:

  • 1)为什么我在表中得到三个外键列People?我实际上期望两个。如果我public Company Company { get; set; }Person第三列中删除属性CompanyCompanyId2会消失,但我也会丢失类中的引用属性。

  • 2)假设我Company从表中删除了属性Person(我的模型中并不需要它)。有没有办法给剩下的两个外键列另一个名称而不是自动创建的CompanyCompanyIdand CompanyCompanyId1?(例如FCompanyIdandMCompanyId表示与FemaleEmployeesMaleEmployees集合的关系。)

  • 3) 有没有办法用表CompanyId中的一个外键来定义这个模型People?当然,我需要在Person类中添加一个与众不同的列(如bool IsFemale)。Person 要么是集合的一部分,要么FemaleEmployeesMaleEmployees集合的一部分,从不在两者中(在这个例子中很自然),所以使用 SQL 我可以通过类似WHERE IsFemale = true/false AND CompanyId = 1. 我想知道是否可以给 EntityFramework 提示以这种方式加载两个集合。(在这里我想避免通过一个FemalePersonMalePerson类来扩展模型,这两个类都派生自Person作为基类,然后使用例如 Table-Per-Hierarchy 映射,因为这些派生类将是空的和人为的,除了启用到 SQL Server 的映射之外没有其他目的。)只有一个外键可以让CompanyId我做到non-nullable使用两个外键是不可能的(在同一行中两者都不能是非空的)。

提前感谢您的反馈和建议!

0 投票
1 回答
2032 浏览

c# - EF4 CTP5:通过 MEF 模块扩展模型 - TPH - OnModelCreating

很抱歉没有找到更好的标题。我正在尝试通过 MEF 模块扩展 EF4 CTP5 模型:想法是指定一些基本实体。这些基本实体位于我的解决方案模型程序集中的 Context 类旁边。

例如,将有一个名为变量的实体。变量是一个非常通用的实体,我希望应用程序的某些模块指定特殊变量实体以提供更详细的属性,但它们应该存储在同一个表中(TPH - 每个层次结构的表)。

为此,我指定了一个接口 IModelContextExtension

每个想要使用自定义变量的模块都必须导出一个实现此接口的类。在模型的 OnModelCreating 方法中,我循环每个注册的模块,并调用该模块的 OnModelCreating 方法。然后它可以在提供的IModelBuilderFacade 上调用例如“RegisterVariableType”,以宣布一个Variable-Derived-Type(例如MySpecialVariable2)。

** 有趣的部分:** RegisterVariableType 方法似乎工作得很好,除非 Variable-Derived-Type 位于另一个(MEF-Loaded)程序集中。如果我从另一个模块注册一个变量,那么整个映射似乎已损坏。因为,当我现在尝试向其存储库添加一个变量时,它在添加过程中崩溃:“序列不包含任何元素”。如果我从加载的模块中删除类型,它会像预期的那样工作。

如果有人感兴趣,我会发布 IRepository 的东西,但我敢肯定,那不是问题..

这里是来自我的上下文(从 DbContext 派生)类的 OnModelCreating 方法:

RegisterVariableType 函数将(变量派生的)类型添加到存储在 modelBuilderFacade 中的 IEnumerable。

添加类型后,我调用自己的 Map 函数来进行 TPH 映射。

这里的地图功能:

这里是RequiredMappingActionFactory

希望有人可以帮助我,最好的问候,

切里奥,克里斯

0 投票
1 回答
65 浏览

asp.net - 为什么我不能从我的 wcf 服务类库中引用我之前创建的项目?

警告 1 引用的程序集“C:\Users\rzv\Desktop\CompanyAnalyse1.0\AnalyserModel\bin\AnalyserModel.dll”无法解析,因为它依赖于“System.Web,Version=4.0.0.0,Culture=中性,PublicKeyToken=b03f5f7f11d50a3a”,它不在当前目标框架“.NETFramework,Version=v4.0,Profile=Client”中。请删除对不在目标框架中的程序集的引用,或考虑重新定位您的项目。

为什么我会得到这个?AnalyserModel 是一个类库,它使用实体框架代码前 5 来将数据保存在数据库中。我尝试创建一个使用 AnalyserModel 中的方法的新 WCF 服务应用程序。怎么了?

0 投票
1 回答
1027 浏览

c# - 使用实体框架 CTP5 与旧数据库映射关系

我无法使用 Code First / Fluent API 将两个实体与 Entity Framework CTP5 一起映射。该数据库是我们公司正在切换到的另一个应用程序(Exact MAX)的旧数据库,我正在编写一个应用程序供我自己使用来管理我们仓库中的货物。没有任何内容保存到旧数据库中,其中包括本文中提到的实体。

实体是 SalesOrder,它只有一个 Address,以及 Address,它可以有多个 SalesOrder。我必须指定列名,这是问题之一。另一个是地址有两个键,一个客户 ID 和一个地址 ID,它们链接到 SalesOrder 中的匹配列。列名很可怕:表 SO_Master 中的 CUSTID_27 和 SHPCDE_27 用于 SalesOrders,表 SHIPPING_MASTER 中的 CUSTID_24 和 SHPCDE_24 用于地址。

我最终在昨晚深夜放弃了。本文中的代码行来自 SalesOrder 的映射,最后两行用于映射 SalesOrder 和 Address。我从谷歌搜索中收集的每个键都有一个映射,但我什至不确定它应该作为两个单独的通道完成。检索到的 Address 记录本身是可以的,但 SalesOrders 中的记录不是。一个检索到的 SalesOrder 记录具有有效地址,但其余的 SalesOrder 具有空地址。

如果需要,我不会有任何问题使用数据注释。我可以改用 LINQ to SQL,但我想看看是否有使用它的解决方案。也许 EF 不是这个数据库的最佳选择,但代码分离得很好,我可以试验。我正在使用 Visual Studio Express 和 SQL Server Express 2008 R2,但找不到任何允许设计师使用的东西,这就是我使用 Code First 的原因。

感谢您花时间阅读这篇文章。

好的,我最终接受了 Vulgarbinary 的使用数据注释的建议,并在需要的地方使用了 ForeignKey 属性。我仍然必须使用 Fluent API 将地址映射到客户。我不确定为什么。在没有 Fluent API 映射的情况下,地址记录不断与空客户一起返回。我猜是因为我在地址中有两个键用于将地址与订单联系起来,但只有一个键用于客户到地址的映射。

我想我现在了解如何更好地使用 Fluent API,但我显然需要阅读更多内容。我也许可以返回并将某些属性更改回 Fluent 行,但这对于我正在处理的应用程序来说并不值得。

0 投票
3 回答
1791 浏览

entity-framework - 无法删除具有多对多关系的对象

这些是我的简化实体:

问题是连接表引用了用户表,并且 ef 在删除用户之前没有从连接表中删除记录

我尝试编写测试用例,我注意到:

如果使用相同的上下文来添加具有角色的用户,保存更改,删除并再次保存更改它可以工作

但是如果我使用 2 个不同的上下文,一个用于插入,另一个用于删除,我会收到此错误

0 投票
1 回答
1332 浏览

entity-framework - 实体框架 CTP5(代码优先)建模 - 查找表

假设如下表结构:

表:

分配表将任务与分配给它的资源相关联。是否可以将此结构与模型构建器进行映射,这样我就不必创建一个 Assignment poco 类 - 隐藏一些底层数据结构?

IE:

如何在不创建分配 poco 类的情况下使用模型构建器将任务映射到资源?