Entity Framework 获取当前上下文

4
我正在扩展实体的部分类以添加一个方法。如何获取实体所附加到的上下文的引用(如果有)以从同一上下文获取更多实体。
如果不清楚,基本上我要编写的代码类似于以下代码(伪代码):
public void AssignSize(int width, int height)
{
    var size = (from s in this.context.Sizes
                where s.width == width && s.height == height
                select s).FirstOrDefault();

    ...
}

注意:这个方法不起作用。

3个回答

4

您需要将上下文传递到此方法中,或者更好的方法是,不要传递宽度和高度,而是直接传递大小对象。


注意到示例的无聊之处了 :o) 所以没有办法在不传递上下文的情况下完成吗?真遗憾。 - NikolaiDante
考虑以下代码:var myEntity = new MyEntity(); myEntity.AssignSize(1,2);将实体与特定上下文耦合在一起是一个问题。 - Andrew Peters

3

请注意,从EF6开始,这将不起作用:所有实体都是简单的POCO,不再从EntityObject继承,并且不知道它们的上下文(但它们的上下文知道它们)。 - dudeNumber4
1
这种方法适用于EF6:http://www.apterasoftware.com/Blog/Post/10-10-26/How_To_Get_the_Context_from_an_Entity_Framework_Object.aspx - dudeNumber4
1
@dudeNumber4,那个链接现在已经失效了。 - rdans
@RyanDansie,我真希望能看到那篇博客文章的内容,因为对我来说,EF6实体就是简单的POCO,这似乎是不可能的。 - dudeNumber4
1
https://web.archive.org/web/20120202002212/http://www.apterasoftware.com/Blog/Post/10-10-26/How_To_Get_the_Context_from_an_Entity_Framework_Object.aspx虽然不确定这是否是一个好主意。 - Matthew

0

Entities db = new Entities();

这里的Entities是你在EF中命名的名称...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接