我是实体框架4.0的新手,在C#中使用它,并且正在尝试使用它的功能。实体框架4 - 在生成的实体中嵌入ObjectContext参考
我注意到,就像大多数类似的ORM一样,它依赖于一个Context对象来处理在生成的实体上完成的数据操作和CRUD语句生成。
这意味着如果我想将更改保存回数据库,我总是需要能够访问实例实例化的ObjectContext的引用。
如果上下文已经在可访问的作用域(例如,同一个方法)中创建,那么这很好,但如果我将实体或实体设置为方法并希望此方法保存更改,该怎么办?它看起来像唯一简单的方法是将ObjectContext与参数一起传递。
另一种解决方案是将ObjectContext放在某种全局变量中。不用说,我发现这两种方法的样式和可维护性问题。
总而言之,我能想象的最好方法是从实体或实体集合中获取对ObjectContext的引用。 我知道这是不可能的默认情况下。
I have found a method显示添加扩展方法从实体获取ObjectContext。但是,它只适用于具有关系的实体,根据作者称这种方法是昂贵的。
我正在考虑修改T4模板来为所有实体添加一个Context属性,并自动将其填充到实体的实例上。
我已经修改了T4模板,让实体框架对我生成的类执行了最大长度(通过遵循Julie Lerman的编程实体框架4书)。 我不能说我真的很喜欢到目前为止的T4语法,但如果这是最好的/唯一的方式,那就这样吧...
有没有人已经这样做了,什么是最好的方式来处理这个和愿意分享他的T4模板或解释什么是最好的部分方法或事件挂钩以完成这件事?
使用这种方法有什么主要缺点吗? 我在想如果ObjectContext有这么多的引用可能会阻碍/延迟它被GC重新召集的能力,如果我的一些实体仍然在范围内,但实际上我已经不再使用ObjectContext了。
非常感谢。