2011-03-17 10 views
5

में शामिल होने पर Fluent Nhibernate ApplyFilter मैं एक कॉलम पर एक फ़िल्टर (ApplyFilter) लागू करने का प्रयास कर रहा हूं जो किसी अन्य तालिका से जुड़ें (और अनुमानित) है। एक UserMap साथकॉलम

public class User 
{ 
    public virtual int Id { get; private set; } 
    public virtual string EMail { get; set; } 
    ... 
    public virtual bool IsActive { get; set; } 
    public virtual int CompanyId { get; set; } 
} 

: मैं निम्नलिखित इकाई है

public class UserMap : ClassMap<User> 
{ 
    public UserMap() 
    { 
     Table("Users"); 
     Id(x => x.Id, "UserId"); 
     Map(x => x.EMail); 
     ... 

     Join("CompanyUser", r => 
     { 
      r.KeyColumn("UserId"); 
      r.Map(x => x.IsActive); 
      r.Map(x => x.CompanyId); 
      r.Fetch.Join(); 

     }); 

     ApplyFilter<CompanyFilter>("this_1_.CompanyId = :companyId"); 
    } 

यह वास्तव में अभी से काम करता है, लेकिन जैसा कि आप मुझे "this_1_" CompanyUser के लिए अन्य नाम शामिल करने के लिए आ रही हैं देख सकते हैं फिल्टर में मेज ... यह सही नहीं लग रहा, लेकिन अगर मैं फिल्टर के रूप में FilterDefinition कक्षा में परिभाषित किया गया है छोड़ मैं एक के साथ एक Sql मिलती है:

where this.CompanyId = ?p0 

जो CompanyId स्तंभ क्योंकि मैप नहीं है ' सी एक अलग प्रक्षेपण से ओम्स (कंपनीयूसर इस_1_ के रूप में)

क्या इसे ठीक करने का कोई तरीका है और फ़िल्टर के लिए सही उपनाम को निषेध करने दें?

किसी भी मदद के लिए अग्रिम धन्यवाद।

+0

मैं भी इस का जवाब जानने में खुशी होगी। क्या आपको एक बेहतर समाधान मिला? – pauldunlop

+0

आज कोई समाधान? – RMalke

+0

@RenanMalkeStigliani नहीं, मैं बस उस समय के लिए इसके साथ रहना समाप्त कर दिया, मुझे कोई समाधान नहीं मिला .... अगर मैं इसे – Jaime

उत्तर

0

मुझे लगता है कि आप में शामिल होने पर फिल्टर लागू करना चाहिए:

Join("CompanyUser", r => 
    { 
     r.KeyColumn("UserId"); 
     r.Map(x => x.IsActive); 
     r.Map(x => x.CompanyId); 
     r.Fetch.Join(); 

    }).ApplyFilter<CompanyFilter>("CompanyId = :companyId"); 
+0

उत्तर के लिए धन्यवाद, तो मैं इसे यहां पोस्ट करना सुनिश्चित कर दूंगा, मैं हूं यह सुनिश्चित नहीं है कि यह मेरी समस्या हल करता है, हालांकि, "this_1_.companyId" संदर्भ मैपिंग क्लास में हार्डकोड किया जा रहा है ... इसलिए जब मैं उपयोगकर्ता आईडी में अन्य इकाइयों के साथ उपयोगकर्ता से जुड़ता हूं, तो "this_1_.companyId" कुछ "this_2_" होना चाहिए ... – Jaime

+0

क्या आप नया संस्करण (मेरे संपादन के बाद) आज़मा सकते हैं? मुझे लगता है कि NHibernate फ़िल्टर को पार करता है और आवश्यकता होने पर सही उपनाम जोड़ता है। –