【问题标题】:ADO.NET Entity Data Model (Entity object)ADO.NET 实体数据模型(实体对象)
【发布时间】:2013-01-04 07:29:10
【问题描述】:

我有实体实例(北)

NorthdatabaseEntity north = new NorthdatabaseEntity()

问题是我无权访问 ObjectContext 方法。我试图用对象“north”来调用它们,但我没有从 ObjectContext 中找到方法“AddObject”或任何其他方法。 我认为任何实体对象都有来自 ObjectContext 类的所有方法。

问题出在哪里?

【问题讨论】:

  • 只有上下文对象负责管理实体。

标签: c# asp.net sql entity-framework ado.net


【解决方案1】:

ObjectContext 和实体是不同的对象;您可以使用ObjectContext 添加/修改/删除对象,但实体无法直接访问ObjectContext

您需要创建ObjectContext 的实例并对其自身而不是实体执行操作。

【讨论】:

  • 我在 VS2012 中有以下代码示例 static int SelectCustomersCount() { NorthwindEntities northwindEntities = new NorthwindEntities(); string nativeSQLQuery = "SELECT count(*) FROM dbo.Customers"; var queryResult = northwindEntities.ExecuteStoreQuery(nativeSQLQuery); int customersCount = queryResult.FirstOrDefault();返回客户计数;在这里它可以工作,但是当我尝试创建自己的对象时,我看不到带有我的实体对象的方法“ExecuteStoreQuery()”或“AddObject()”方法。为什么在这个例子中有效?
  • 但是为什么示例中的 NorthwindEntities 对象可以看到“ExecuteStoreQuery()”、“AddObject()”等方法而我的对象却不能?它们来自同一类型 (NorthwindEntities)。
  • 你能把光标放在 NorthdatabaseEntity 上,然后按 F12。 NorthdatabaseEntity 的基本类型是什么?
  • 当我按下 F12 时,我看到示例中的类“NorthwindEntities”是“公共部分类 NorthwindEntities:ObjectContext”。我的对象来自同一个类“NorthwindEntities”,但是当我按 F12 时,我看到了“公共部分类 NorthwindEntities:DbContext”。为什么当我创建自己的对象时,该类继承 DBContext,而示例中的另一个继承 ObjectContext。这是我认为的问题,但为什么 VS 让它们从不同的类继承?
  • 是的。但我认为这里的问题是我的类继承了 DBContext 并且使用 F12 我从“DBContext”更改为“ObjectContext”,现在它可以按我的意愿工作。但是用 F12 改变类结构是一个好习惯吗?你怎么看?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-03
  • 2018-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多