问题标签 [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.
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/
此外,我搜索了是否在我的上下文中添加了条目,结果如下:
一个类似的问题是:
但我已经做了所有的建议。
这是存储过程:
我错过了什么?
谢谢
entity-framework-4 - 实体框架:使用 CodeFirst 设置删除规则
我正在使用 EF4 CTP 5,CodeFirst。
请先看我的课:
我的目标是为客户语言关系设置一定的“删除规则”。当一种语言被删除时,我不想删除相应的客人(所以没有级联删除)。相反,我希望客人的 LanguageID 为“Set NULL”。
我希望流畅的 API 在这里支持我。但是除了 .WillCascadeOnDelete(bool) 之外,我找不到任何有用的东西,它没有提供我需要的选项。我错过了什么吗?或者这只是没有在 CTP 5 中实现?
谢谢你的帮助!
.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
不允许将类型作为鉴别器列。)
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 一起使用。
因此,有人对此有任何干净而聪明的解决方案吗?我认为解决方案可能涉及表达式重写,但我不太确定从哪里开始。
任何帮助是极大的赞赏,
保罗
.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
(我的模型中并不需要它)。有没有办法给剩下的两个外键列另一个名称而不是自动创建的CompanyCompanyId
andCompanyCompanyId1
?(例如FCompanyId
andMCompanyId
表示与FemaleEmployees
和MaleEmployees
集合的关系。)3) 有没有办法用表
CompanyId
中的一个外键来定义这个模型People
?当然,我需要在Person
类中添加一个与众不同的列(如bool IsFemale
)。Person 要么是集合的一部分,要么FemaleEmployees
是MaleEmployees
集合的一部分,从不在两者中(在这个例子中很自然),所以使用 SQL 我可以通过类似WHERE IsFemale = true/false AND CompanyId = 1
. 我想知道是否可以给 EntityFramework 提示以这种方式加载两个集合。(在这里我想避免通过一个FemalePerson
和MalePerson
类来扩展模型,这两个类都派生自Person
作为基类,然后使用例如 Table-Per-Hierarchy 映射,因为这些派生类将是空的和人为的,除了启用到 SQL Server 的映射之外没有其他目的。)只有一个外键可以让CompanyId
我做到non-nullable
使用两个外键是不可能的(在同一行中两者都不能是非空的)。
提前感谢您的反馈和建议!
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
希望有人可以帮助我,最好的问候,
切里奥,克里斯
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 服务应用程序。怎么了?
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 行,但这对于我正在处理的应用程序来说并不值得。
entity-framework - 无法删除具有多对多关系的对象
这些是我的简化实体:
问题是连接表引用了用户表,并且 ef 在删除用户之前没有从连接表中删除记录
我尝试编写测试用例,我注意到:
如果使用相同的上下文来添加具有角色的用户,保存更改,删除并再次保存更改它可以工作
但是如果我使用 2 个不同的上下文,一个用于插入,另一个用于删除,我会收到此错误
entity-framework - 实体框架 CTP5(代码优先)建模 - 查找表
假设如下表结构:
表:
分配表将任务与分配给它的资源相关联。是否可以将此结构与模型构建器进行映射,这样我就不必创建一个 Assignment poco 类 - 隐藏一些底层数据结构?
IE:
如何在不创建分配 poco 类的情况下使用模型构建器将任务映射到资源?