Fluent nHibernate - आलसी लोडिंग नहीं

यह शायद कुछ मूर्खतापूर्ण है लेकिन मैं इसके चारों ओर अपना सिर प्राप्त कर सकता हूं। मेरे पास तीन टेबल हैं

Post
id
content
...
User 
id
name
...
Vote
user_id
post_id
votedate

मेरा वोटमैप:

public class VoteMap : ClassMap
{
    public VoteMap()
    {
        DynamicUpdate();

        Table("vote");            
        Id(Reveal.Member("_id")).Column("id");
        Map(Reveal.Member("_votedate")).Column("vote_date");

        References(x => x.Post).Column("post_id").LazyLoad().Not.Nullable();
        References(x => x.User).Column("user_id").LazyLoad().Not.Nullable();
    }
}

PostMap:

public class PostMap : ClassMap
{
    public PostMap()
    {
        DynamicUpdate();

        Table("post");
        Id(Reveal.Member("_id")).Column("id");
        Map(Reveal.Member("_content")).Column("content");
        References(x => x.User).Column("user_id").Not.Nullable().LazyLoad();
    }
}

UserMap

public class UserMap : ClassMap
{
    public UserMap()
    {
        DynamicUpdate();

        Table("user");
        Id(Reveal.Member("_id")).Column("id");
        Map(Reveal.Member("_name")).Column("name");

        HasMany(x => x.Posts).KeyColumn("user_id").LazyLoad();
        HasMany(x => x.Votes).KeyColumn("user_id").LazyLoad();
    }
}

जब मैं वोट पुनर्प्राप्त करता हूं:

var myvote = _votesRepository.GetVote(postid, userid);
int post_id = myvote.Post.Id;
int user_id = myvote.User.Id;

Vote attributes are set correctly. Post and User references are of type Castle.Proxies.PostProxy and Castle.Proxies.UserProxy and their attributes are empty. (post_id and user_id are set to 0)

इस डेटा को आलसी लोड नहीं करना चाहिए?

0
क्योंकि मेरी सभी इकाइयों में केवल-पढ़ने योग्य गुण हैं (किसी इकाई को अमान्य स्थिति में रहने की इजाजत नहीं है)। मैंने सार्वजनिक आभासी गुणों के साथ निजी विशेषताओं को प्रतिस्थापित किया है लेकिन अभी भी मुझे एक ही परिणाम मिल गया है। यह केवल तभी काम करता है जब मैं स्पष्ट रूप से सभी मैपिंग में .Not.LazyLoad() जोड़ता हूं।
जोड़ा लेखक Klaatu Verata Necto, स्रोत
पारितोषिक के लिए धन्यवाद!
जोड़ा लेखक Klaatu Verata Necto, स्रोत
जिज्ञासा से, आपने आईडी के लिए निजी फ़ील्ड ( "_ id" ) क्यों मैप किया, और आईडी गुण नहीं? हालांकि मैं वास्तव में निजी फ़ील्ड मैपिंग से परिचित नहीं हूं, मुझे आश्चर्य है कि यह आलसी लोडिंग के साथ विशेष रूप से पहचानकर्ताओं के लिए अच्छा होगा। क्या आपने संपत्ति मैपिंग के साथ इन्हें बदलने की कोशिश की है?
जोड़ा लेखक jbl, स्रोत
आपकी इकाई कक्षाओं के प्रासंगिक कोड होने से आपकी समस्या को समझने में मदद मिलेगी।
जोड़ा लेखक jbl, स्रोत

1 उत्तर

आप सही jbl थे, यह निजी आईडी फ़ील्ड बिल्कुल पसंद नहीं है। इस परिवर्तन ने समस्या हल की:

protected int _id;
public virtual int Id { get {return _id;} }

और इस से सभी वर्गों के लिए मेरी मैपिंग बदल रहा है:

Id(Reveal.Member("_id")).Column("id");

इसके लिए:

Id(x => x.Id).Column("id");
0
जोड़ा