我試圖找到一種方法來從實體內部提供DataContext。在檢索到實體實例後設置DataContext
我想要做這樣的事情:
partial public class MyEntity
public DataContext as MyDataContext
private sub OnLoaded()
Me.DataContext = <the context that retrieved this instance>
end sub
end class
首先,可以像這樣做呢? 其次,假設我不打算將此實體與任何其他DataContext一起使用,那麼在做這樣的事情時是否存在任何危險或陷阱?
這是我做它目前的方式:
partial public class MyDataContext
public function GetMyEntity(byval id as integer) as MyEntity
dim o = MyEntities.SingleOrDefault(function(e) e.id = id)
if o isnot nothing then o.DataContext = Me
return o
end function
end class
爲什麼你需要那個?爲什麼你需要每個實體的數據上下文? – jaraics 2011-04-19 05:54:28
一般來說,這似乎是不必要的,並且可能有更好的方法來做任何你想做的事情。如果您提供對您的方案更詳細的描述,這將有所幫助。取決於您計劃如何使用此係統,可能存在一些問題。據我所見,你有一個Web應用程序(在評論中引用「HttpContext」)。想到的一件事是,如果您使用每個請求或更短的上下文壽命,但是,比如說將實體存儲在緩存中並嘗試稍後檢索並使用它們 - 您將會遇到第一個問題。如果你描述你的場景,我可以嘗試多想一想。 – Yakimych 2011-04-21 17:33:08
我不想緩存任何東西。我確切地說我想在問題中做什麼。我只是想要(從一個實體實例中)引用到檢索它的數據上下文。正如我在其他評論中所說的,數據上下文的生命週期不會超過Web請求。 – 2011-04-21 23:48:04