Entity framework 4 实体框架继承创建协同响应实体
我有一个EF模型,逻辑上我有一个“模板”类型和一个“模板类型的实例” 基本上,我的模板就像一个工作流,实例就是那些应用于对象的模板。关联是一个模板有零到多个实例,一个实例总是基于一个模板。例如,模板可以是“send letter”,应用于客户以创建已发送信函的实例,其中包括发送日期、信函的pdf等 模板有几个子类/类型,这些子类/类型将始终匹配一个实例,该实例也有相应的子类 问题是如何确保在创建实例(将有对模板的引用)时,该实例是正确的继承类型 例如,如果模板的类型为TemplateType2(继承自模板),并且我向loan1添加了一个实例。。loan1.TemplateInstances.add(foo)…我想确保foo的类型为InstanceType2 我现在做这件事的方式看起来像是一种恶作剧。我将实例实体名称作为标量值存储在模板实体中,并使用反射创建正确类型的实例 它可以工作,但基本上是使用属性的值进行映射,如果它们与实例名称的名称不匹配,或者如果它们输入了错误的实体名称,则可能会出现各种错误Entity framework 4 实体框架继承创建协同响应实体,entity-framework-4,Entity Framework 4,我有一个EF模型,逻辑上我有一个“模板”类型和一个“模板类型的实例” 基本上,我的模板就像一个工作流,实例就是那些应用于对象的模板。关联是一个模板有零到多个实例,一个实例总是基于一个模板。例如,模板可以是“send letter”,应用于客户以创建已发送信函的实例,其中包括发送日期、信函的pdf等 模板有几个子类/类型,这些子类/类型将始终匹配一个实例,该实例也有相应的子类 问题是如何确保在创建实例(将有对模板的引用)时,该实例是正确的继承类型 例如,如果模板的类型为TemplateType2(
如何解决这个问题,你有什么想法吗 我最后通过一点技巧解决了这个问题。 我使用命名约定并将自己的处理程序添加到context savingchanges方法中 然后是一点反思。这不是最好的解决方案,但很有效 主要部分
For Each entry As ObjectStateEntry In DirectCast(sender, ObjectContext).ObjectStateManager.GetObjectStateEntries(EntityState.Added)
If Not entry.IsRelationship Then
[blah blah...snip]
ObjectName = Me.GetType.ToString
If ObjectName = "QSEntityFrameWork.TaskTemplate" Then
ObjectName = "QSEntityFrameWork.TaskInstance"
Else
ObjectName = ObjectName.Replace("Task", "Instance")
End If
oh = Activator.CreateInstance("QSEntityFrameWork", ObjectName)
Dim obj As Object = oh.Unwrap
obj.TaskTemplateID = Me.TaskTemplateID
obj.TaskStartDate = DateTime.Now
obj.ProcessInstanceID = ProcessIntanceID
Return obj