【发布时间】:2014-05-20 16:17:05
【问题描述】:
我正在处理一个使用 EF 的应用程序,采用代码优先的方法,因此有多个域类。
我需要访问 ObjectContext.SavingChanges 以便我可以对一些新添加的业务规则进行操作。根据我在这里看到的 SO 和 Julie Lerman's book 我需要创建一个具有相同的部分类名称为 EF 生成的部分类。
我似乎找不到这些生成的 EF 类的位置。没有它,我就没有类名或命名空间可用于我的部分类实现。
问题
1.在哪里可以找到这些生成的 EF 类?
2.找到后,如果我需要访问 ObjectState.SavingChanges,我应该使用哪一个作为分部类?
【问题讨论】:
-
在代码优先中,您希望生成什么样的类?在我们的 EF Code First 项目中,我们自己编写这些类,并允许在模型更改时迁移以更新数据库。
-
1. “代码优先”意味着没有类生成。这意味着,您自己编写实体类。 2. 假设您正在使用
DbContextAPI,您可以通过((IObjectContextAdapter)yourDbContext).ObjectContext访问ObjectContext。您可以在您拥有yourDbContext变量的任何地方执行此操作,或者从您的DbContext派生类型内部。为此,您不需要部分课程。 3. 为什么你认为需要ObjectContext.SavingChanges来应用业务逻辑?看起来你误会了什么。 -
@Dennis 好问题。当某些实体类中的数据发生更改时,我们需要能够在一个地方检测到它,然后更新另一个表中的日期时间字段,所以我认为 Object.SavingChanges 会对此有好处。我知道如何覆盖 SaveChanges() 但不知道 ObjectContext.SavingChanges
-
@Dennis 不,“代码优先”有点用词不当,因为名称暗示您首先创建类,但这不一定是这种情况。您可以基于现有数据库生成类。微软甚至承认该名称具有误导性:blogs.msdn.com/b/adonet/archive/2014/10/21/…
标签: c# entity-framework ef-code-first partial-classes objectcontext