问题标签 [entity-framework-4.3]

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 投票
0 回答
632 浏览

ef-code-first - DbContext 与已编译查询

我目前正在开发一个使用实体框架进行数据持久性的项目。它开始使用带有 EDMX 和 T4 模板的 Entity Framework 4 以及带有 Objectset 的 ObjectContext。已经使用了很多 Complied 查询来提高查询性能。

但是,该方法不再可扩展,因为项目团队规模已经增加并且需要实施测试驱动开发。因此,我们决定将使用实体对象转换为 POCO 和 DbContext,以支持测试驱动开发,用于存储库集成测试和数据迁移。

不幸的是,我们意识到不支持 DbContext 的已编译查询。我们决定为(CRUD)和 ObjectContext(Complied Queries)使用两个独立的继承上下文类,因为在不久的将来我们可以转向使用 DbContext 自动编译查询支持。

我的问题是

  1. 实施这种方法会产生什么后果?
  2. 有没有其他方法?

谢谢

0 投票
1 回答
742 浏览

ef-code-first - EntityType 'MembershipUser' 没有定义键。继承类

我试图在运行我的项目之前添加一个迁移。

尝试添加迁移时出现以下错误

这是课程:

它的父母:

最后 OnModelCreating:

有人知道我在做什么错吗?

0 投票
4 回答
13078 浏览

c# - 用于在查询中预先加载的动态 Include 语句 - EF 4.3.1

我有这个方法:

我想使包含列表动态化。我试过:

但它没有编译。我收到了这个错误:

无法将类型“System.Data.Entity.Infrastructure.DbQuery”隐式转换为“System.Data.Entity.DbSet”。存在显式转换(您是否缺少演员表?)

有谁知道如何使包含列表动态化?

谢谢

0 投票
0 回答
896 浏览

entity-framework-4.3 - 实体框架代码优先 - 删除迁移表?

在 EF Migrations (V 4.1) 之前,如果我想为一个实体创建一个新的属性/列,我可以在我的开发机器上“作弊”很容易:

我会在数据库中创建该列,然后将该属性添加到我的实体中——它有效,我不必重新创建我的数据库。

同样的“作弊”不再适用于 V4.3。我还能以某种方式使用 V 4.3 做到这一点,例如删除迁移表或做一些其他技巧 - 严格来说是为了快速开发过程吗?

谢谢你

0 投票
2 回答
8506 浏览

entity-framework - 为什么 EF Code First [InverseProperty] 属性与 [ForeignKey] 属性一起使用时无法正常工作?

使用:EF 4.3.1、Visual Studio 2010、SQL CE 4.0

我的理解是,在EF中用DataAnnotation声明外键时,可以通过以下任一方式完成:

选项1-

选项 2-

问题:

当 InverseProperty DataAnnotation 与选项 2 一起使用时,除了 HPlayer1Id 之外,还会在数据库(Player1Home_Id) 中生成一个额外的列。

当然,如果我将 HPlayer1Id 重命名为 Player1HomeId,那么选项 2 将再次正常工作。但是 DataAnnotation 的全部目的是在“约定”无法自动确定匹配属性时允许显式命名。

删除 Player 类上的 InverseProperty DataAnnotation 似乎也解决了这个问题,但不幸的是我不能这样做,因为我的实际 Match 类中有四个 Player,因此我需要显式映射。

最后,我知道我可以只使用选项 1,但我更喜欢在 Id 字段上声明我的所有键(主键和外键)而不是在导航属性上声明外键的一致性。从技术上讲,任何一种方式都应该有效。

这只是 4.3.1 中的一个错误吗?首先在EF代码中?

还是不支持将 ForeignKey 和 InverseProperty 从两个不同的属性映射到公共的第三个属性?

任何信息将不胜感激!

更新:第二个错误?

第三个选项应该也可以(如 Slauma 所建议的那样),但会在我第一次尝试将实体添加到数据库时引发 NullReferenceException。数据库永远不会被创建,而上面的选项 2 没有这个问题。看来这在 EF 4.1 上对 Slauma 有效,但对我在 EF 4.3.1 上无效。(我在 SQL CE 4.0 中使用它)

用法:

0 投票
3 回答
32635 浏览

entity-framework-4.3 - EntityFramework Code First - 检查是否附加了实体

我正在尝试在 EntityFramework 4.3 Code First 中更新具有 FK 关系的实体。我尝试通过调用附加到相关实体: Entry(item).State = EntityState.Unchanged

我得到以下异常:ObjectStateManager 中已存在具有相同键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象。

我没有更新这些项目,也没有在我的主要实体上为它们提供 id 属性。是否有可能知道哪些实体已附加或不附加?

在此先感谢,拉杜

0 投票
3 回答
7105 浏览

c# - Code First Fluent API 验证不起作用

有一个类 - 这是一个普通的类,没什么特别的:

映射:

当我在表单(视图)中将 FirstName 或 IsRequired() 的其他字段留空时,验证不会启动。它只是遇到错误:

一个或多个实体的验证失败。有关更多详细信息,请参阅“EntityValidationErrors”属性。

不幸的是,这个错误并没有说太多。我挖得更深了,但我唯一能得到的是

列名鉴别器无效。

我认为这将是某处被遗忘的继承(对于 User 类),但我没有发现任何可疑之处。

问题是当我在 Trader 类中使用属​​性时,一切都按预期工作。

使用属性,验证工作正常,@Html.ValidationMessageFor 开始显示错误消息,并且不允许发送 NULL 值。

你有什么建议我的映射会有什么问题吗?

更新 1 事实上,上面的属性是这个问题的一个可能的解决方案。

0 投票
1 回答
1170 浏览

asp.net-mvc-3 - MVC3 脚手架存储库中的单例 DbContext 派生对象

我在 MVC4 应用程序和 Ninject.MVC3 中使用 EF 4.3。控制器使用 -Repository 开关进行 MVC 脚手架。MVCScaffolder 使用 EF 创建存储库类(和相应的 IRepository 接口)以进行数据访问,其中 DbContext 派生对象始终作为每个脚手架存储库中的数据成员“更新”。

搭建控制器的本质是,对于每个控制器,您通常还会获得相应的存储库。

问题:

1)为您拥有控制器的每个域对象都有一个存储库是否有意义?
与只应公开聚合根的存储库模式相比,这似乎违反直觉。

2) 每次实例化存储库对象时生成 DbContext 派生对象的新实例是否有意义,或者在应用程序启动时向 DI 容器注册 DbContext 派生对象的单例实例并解决它是否有意义像这样的单例存储库:

在应用程序的生命周期内将 DbContext 派生对象作为单例保留有什么缺点吗?

谢谢。

0 投票
5 回答
13110 浏览

c# - 如何首先使用迁移向 Entity Framework 4.3 代码中的列添加描述?

我首先使用 Entity Framework 4.3.1 代码和显式迁移。如何在实体配置类或迁移中添加列的描述,使其最终成为 SQL Server 中列的描述(例如 2008 R2)?

我知道我可能可以为DbMigration类编写一个扩展方法,将sp_updateextendedpropertyorsp_addextendedproperty过程调用注册为迁移事务中的 sql 迁移操作,并在迁移Up方法中创建表后调用该扩展。但是有没有一种我还没有发现的优雅的内置方式?如果有一个属性,迁移的更改检测逻辑可以获取并在脚手架迁移中生成适当的方法调用,那就太好了。

0 投票
0 回答
8771 浏览

.net - 实体框架错误:找不到 X 的概念模型类型

我有一个包含两个文件夹的演示项目:

两者都有一个 EDMX,对于 DbContext 文件夹,我有一个 DbContext 生成器 T4 模板设置。每当我尝试运行我的 DbContext 示例时,都会收到一条错误消息,提示“找不到 X 的概念模型类型”,它无法加载 EntityFramework 文件夹的 EDMX 中定义的实体的元数据......为什么在世界上它会这样做吗?我没有在 EntityFramework 文件夹中为 EDMX 设置任何 T4 模板,也没有将 EDMX 复制过来,而是在 DbContext 中创建了一个新模板。我验证了连接字符串映射到正确的 EDMX...

为什么我得到错误的任何想法:找不到X的概念模型类型?

谢谢。