में ObjectSet के IObjectSets के बजाय ...
Thx लौटा रहा है लेखक सिर्फ भंडार, नहीं संस्थाओं मजाक कर रहा है। EntityFramework ObjectQueries उत्पन्न करता है, लेकिन वह उन्हें लपेटता है और उसके भंडार IObjectQueries देता है। वह ऐसा करता है ताकि वह डेटा को आसानी से नकल कर सके, फिर सहेजने के दौरान वह केवल संस्थाओं को मान्य करता है।
तुम सिर्फ एक "नकली" भंडार आप अपने खुद के टी -4 टेम्पलेट बना सकते हैं और edmx फ़ाइल से अधिक पुनरावृति और कोड उत्पन्न कर सकते हैं बनाने के लिए कोशिश कर रहे हैं। लेकिन पीओसीओएस उत्पन्न करने का कोई कारण नहीं है? वे पहले से मौजूद हैं, आपको उन्हें फिर से बनाने की आवश्यकता क्यों है? उन्होंने कहा कि एक "सामान्य" FakeObjectSet में सब कुछ निकाला तो वहाँ वास्तव में इतना कोड लिखने के लिए नहीं है?
आप इस उत्पन्न करने के लिए कोशिश कर रहे हैं:
public IObjectSet<Blog> Blogs
{
get
{
return _blogs ?? (_blogs = new FakeObjectSet<Blog>());
}
set
{
_blogs = value as FakeObjectSet<Blog>;
}
}
private FakeObjectSet<Blog> _blogs;
मुझे लगता है कि करने के लिए आप टी -4 के साथ अधिक समय बिताना तो आप बस इसे लिखने होगा जा रहे हैं जा रहा हूँ अगर ऐसा है।
public IObjectSet<Blogs>{
get{
return _Blogs?? (_Blogs = FakeObjectSet<Blog>("Blogs"));
}
set{
_Blogs= value as FakeObjectSet<Class>("Blogs");
}
}
private FakeObjectSet<Blog> _Blogs;
साइड नोट:
उदाहरण टी -4 वर्ग घोषणा के बिना ... आप this blog
<#
foreach (EntitySet set in container.BaseEntitySets.OfType<EntitySet>())
{
#>
public IObjectSet<<#=MultiSchemaEscape(set.ElementType, code)#>>
{
get{
return <#=code.FieldName(set)#> ?? (<#=code.FieldName(set)#> = FakeObjectSet<<#=MultiSchemaEscape(set.ElementType, code)#>>("<#=set.Name#>"));
}
set{
<#=code.FieldName(set)#> = value as FakeObjectSet<<#=MultiSchemaEscape(set.ElementType, code)#>>("<#=set.Name#>");
}
}
private FakeObjectSet<<#=MultiSchemaEscape(set.ElementType, code)#>> <#=code.FieldName(set)#>;
<#
}
#>
कौन इस कोड उत्पन्न होगा पालन करके पूरा t4 कर सकते हैं ।
IObjectSet System.Data में निहित है तो कोई संदर्भ जोड़ें रॉय Osherove द्वारा The Art Of Unit Testing में System.Data.Entity.dll को
Mayby मैं गया था याद आती है समझ में आया, मैं तो बस इस लेख पर आधारित कर रहा हूँ। मुझे पता है कि लेखक Pocos वर्ग हैं, लेकिन मैं है बड़े, पहले से ही विद्यमान डीबी, मैं कई difficoulties के बाद इस डीबी से edmx और अगले (इस Oracle DB है), मैं टी -4 टेम्पलेट का उपयोग करने के लिए POCO वर्गों उत्पन्न करने में सक्षम था, क्योंकि बनाने के लिए किया था मैंने उन्हें हाथ से पहले नहीं लिखा था। अब मैं यूनिट टेस्ट जोड़ना चाहता हूं और अगर मैं रिपोजिटरी का परीक्षण करना चाहता हूं तो मुझे अपने संदर्भ ऑब्जेक्ट को मॉक करना होगा। तो टी -4 संस्थाओं और संदर्भ के लिए वर्ग के लिए POCO वर्गों उत्पन्न, लेकिन इस संदर्भ तो मैं इस इंटरफेस के आधार पर नकली नहीं बना सकते के लिए याद आ रही इंटरफेस था। – Simon
धन्यवाद http://slappyza.wordpress.com/2010/08/08/getting-the-entity-framework-to-generate-an-interface-for-mocking/ को मैं अब के लिए समस्या हल हो गए हैं .. :) – Simon
+1। वास्तव में, सब होने की जरूरत है कि 'मैं' घ अपने मौजूदा 'ObjectSet ...' घोषणाओं ... –