向下转换 ObjectContext 到实体集合

     2023-04-13     66

关键词:

【中文标题】向下转换 ObjectContext 到实体集合【英文标题】:Downcast ObjectContext to Entities collection 【发布时间】:2013-08-07 18:40:00 【问题描述】:

我在 EF4.0 中使用数据库优先方法创建了一个实体模型。

我希望能够在没有 app.config 文件的情况下使用我的模型,因为我的连接设置存储在单独的配置介质中。这迫使我直接使用 ObjectContext 类,传入一个有效的 EF 连接字符串。这是我实例化 ObjectContext 的方式:

var ctx = new ObjectContext(entityConnectionString);

这可以正确执行,我可以使用 ctx.ExecuteStoreCommand() 成功地对数据库运行 SQL 命令。

我生成的模型的名称是 MyEntities。这是从 ObjectContext 派生的,可以在 MyEntities.Designer.cs 中看到:

public partial class MyEntities : ObjectContext

但是,如果我尝试将 ctx 转换为 MyEntities 对象:

MyEntities myEntities = (MyEntities)ctx;

我收到一个错误提示

不能转换“ctx”(它的实际类型为 'System.Data.Objects.ObjectContext') 到 'MyNamespace.MyEntities'

我希望能够像使用 MyEntities 实例一样使用 ctx。这将允许我访问 EF 生成的实体(ctx.entity1、ctx.entity2)。 还有其他方法吗?

【问题讨论】:

【参考方案1】:

您不能将对象转换为您喜欢的任何类型。它实际上必须是那种类型。

看起来您真正想做的是将连接字符串传递给您的MyEntities 类。假设生成的代码还没有提供,只需添加一个带有构造函数的新部分类,该构造函数接受一个字符串并将其传递给基类ObjectContext

public partial class MyEntities : ObjectContext 

    public MyEntities(string connectionString) : base(connectionString)
     

然后使用这个代码:

var ctx = new MyEntities(entityConnectionString);

【讨论】:

哇,我真的进入了自己的脑海。非常简单的解决方案。感谢您为我解决问题!

我应该如何监听从 ObjectContext 添加/删除的实体?

】我应该如何监听从ObjectContext添加/删除的实体?【英文标题】:HowshouldIlistenforentitiesbeingadded/deletedfromanObjectContext?【发布时间】:2012-01-0815:22:31【问题描述】:据我所知,ObjectContext没有公开任何直接监听添加/删除项目的方法。... 查看详情

实体框架和多线程

...,将实体添加到集合中,然后将数据绑定到各种WPF控件。ObjectContext类不是线程安全的,因此我们基本上有两种解决方案来管理它:解决方案1具有单一上下文,并小心使用锁定以确 查看详情

具有实体框架 6 的 ObjectContext 在现有相关实体上插入重复项

】具有实体框架6的ObjectContext在现有相关实体上插入重复项【英文标题】:ObjectContextwithEntityFramework6insertingduplicatesonexistingrelatedentities【发布时间】:2015-11-1500:01:14【问题描述】:我创建它是为了希望为一些人节省一些浪费的时... 查看详情

C# 实体框架每个 HttpContext 仅使用一个 ObjectContext

】C#实体框架每个HttpContext仅使用一个ObjectContext【英文标题】:C#EntityFrameworkusingonlyoneObjectContextperHttpContext【发布时间】:2011-10-0501:12:25【问题描述】:在ASP.NETMVC2中,使用EntityFramework4,我收到此错误“一个实体对象不能被多个IE... 查看详情

与 ObjectContext 相比,为啥在 EF 4.1 中插入实体如此缓慢?

】与ObjectContext相比,为啥在EF4.1中插入实体如此缓慢?【英文标题】:WhyisinsertingentitiesinEF4.1soslowcomparedtoObjectContext?与ObjectContext相比,为什么在EF4.1中插入实体如此缓慢?【发布时间】:2011-05-0922:52:41【问题描述】:基本上,我... 查看详情

ObjectContext.Refresh()?

】ObjectContext.Refresh()?【英文标题】:ObjectContext.Refresh()?【发布时间】:2010-12-1708:16:47【问题描述】:如何更新数据存储中的所有脏实体,并将其更改的值重置为原始存储值?ObjectContext.Refresh方法需要将要刷新的实体作为参数。... 查看详情

c#如何将集合转换成实体对象

...iewModel.Employees=empViewModels;这里就出错了,说集合无法隐式转换为实体对象,我该怎么办?问题已经解决了,是我没认真审题的原因参考技术A使用休集合(List)的Add(对象)方法将对象添加到集合中 查看详情

如何在实体框架中模拟 ObjectContext 或 ObjectQuery<T>?

】如何在实体框架中模拟ObjectContext或ObjectQuery<T>?【英文标题】:HowtomockObjectContextorObjectQuery<T>inEntityFramework?【发布时间】:2010-09-2917:58:31【问题描述】:如何在实体框架中模拟ObjectContext或ObjectQuery?【问题讨论】:除... 查看详情

n 层项目中的实体框架 ObjectContext 生命周期

】n层项目中的实体框架ObjectContext生命周期【英文标题】:EntityFrameworkObjectContextlifetimeinann-tierproject【发布时间】:2015-06-3016:36:34【问题描述】:我目前正在为客户构建一个大型解决方案,其中代码可重用性是关键字,因为不同... 查看详情

如何将 [NSManageObject] 数组“向下转换”到所选实体?

】如何将[NSManageObject]数组“向下转换”到所选实体?【英文标题】:Howto“downcast”anarrayof[NSManageObject]totheselectedentity?【发布时间】:2018-11-0409:43:47【问题描述】:我正在使用CoreData开发应用程序。我有5个实体(A、B、C、D、E)... 查看详情

efdbcontext和objectcontext转换

由DbContext获得ObjectContext的方法:ObjectContextobjectContext=((IObjectContextAdapter)context).ObjectContext;///context是DbContext的实例 PS: ObjectContextVSDBContext ,描述了两者的区别;  查看详情

每组操作的可重用 ObjectContext 还是新的 ObjectContext?

】每组操作的可重用ObjectContext还是新的ObjectContext?【英文标题】:ReuseableObjectContextornewObjectContextforeachsetofoperations?【发布时间】:2010-11-1802:59:45【问题描述】:我是实体框架的新手,我刚开始在空闲时间玩弄它。我遇到的主要... 查看详情

Swift数组不能向下转换为派生数组[重复]

】Swift数组不能向下转换为派生数组[重复]【英文标题】:Swiftarraycannotbedowncasttoarrayofderived[duplicate]【发布时间】:2014-07-2406:19:40【问题描述】:我在Swift中使用CoreData,但无法存储从fetch请求返回的数组。我的数据模型中有两个实... 查看详情

如何修复“ObjectContext 实例已被处置”

】如何修复“ObjectContext实例已被处置”【英文标题】:HowcanIfix"TheObjectContextinstancehasbeendisposed"【发布时间】:2020-06-1001:12:53【问题描述】:我开发了一个带有实体框架的应用程序。我明白了ObjectContext实例已被释放,不能... 查看详情

添加和删​​除时DbContext很慢

...库优先的场景中使用DbContext时,我发现添加和删除实体与ObjectContext相比非常慢。如果添加2000个实体并在最后保存更改,则DbContext比ObjectContext慢3到5倍(顺便说一句:我知道使用SqlBulk 查看详情

实体框架将集合属性映射到一列

】实体框架将集合属性映射到一列【英文标题】:EntityFrameworkmapcollectionpropertytoonecolumn【发布时间】:2017-09-2023:08:12【问题描述】:我有模特:publicclassFlyerPagepublicGuidIdget;set;publicstringPictureget;set;publicint?Pageget;set;publicstringTextget;set... 查看详情

将关系映射到实体框架中的抽象集合

】将关系映射到实体框架中的抽象集合【英文标题】:MappingrelationshipstocollectionsofabstractionsinEntityFramework【发布时间】:2012-09-1918:21:26【问题描述】:我有两个类,每个类都实现了一个接口。其中一个类包含另一个接口的ICollection... 查看详情

Entity Framework 5 将现有实体添加到嵌套集合

】EntityFramework5将现有实体添加到嵌套集合【英文标题】:EntityFramework5addingexistingentitytonestedcollection【发布时间】:2021-03-3117:00:13【问题描述】:我一直在尝试利用一种创建多对多关系的新方法-nicearticleaboutEF5many-to-manyrelationships... 查看详情