তালিকাতে এনএইচবারনেট.কলেশন.জেনারিক.প্রিজিনিটিজেনারিকব্যাগ টাইপের অবজেক্ট কাস্ট করতে অক্ষম


85

আমার কাছে প্রতিবেদনটি নামে একটি ক্লাস রয়েছে:

public class ReportRequest
{
    Int32 templateId;
    List<Int32> entityIds;

    public virtual Int32? Id
    {
        get;
        set;
    }

    public virtual Int32 TemplateId
    {
        get { return templateId; }
        set { templateId = value; }
    }

    public virtual List<Int32> EntityIds
    {
        get { return entityIds; }
        set { entityIds = value; }
    }

    public ReportRequest(int templateId, List<Int32> entityIds)
    {
        this.TemplateId = templateId;
        this.EntityIds = entityIds;
    }
}

ফ্লুয়েট হাইবারনেট হিসাবে এটি ম্যাপ করা হয়:

public class ReportRequestMap : ClassMap<ReportRequest>
{
    public ReportRequestMap()
    {
        Id(x => x.Id).UnsavedValue(null).GeneratedBy.Native();
        Map(x => x.TemplateId).Not.Nullable();            
        HasMany(x => x.EntityIds).Table("ReportEntities").KeyColumn("ReportRequestId").Element("EntityId").AsBag().Cascade.AllDeleteOrphan();
    }
}

এখন, আমি এই শ্রেণীর একটি বস্তু হিসাবে তৈরি করি

ReportRequest objReportRequest = new ReportRequest(2, new List<int>() { 11, 12, 15 });

এবং ডাটাবেস ব্যবহার করে অবজেক্টটি সংরক্ষণ করার চেষ্টা করুন

session.Save(objReportRequest);

আমি নিম্নলিখিত ত্রুটিটি পেয়েছি: "'এনএইচবারনেট.কলেশন.জেনারিক. পার্সিয়েন্টজেনারিক ব্যাগ 1[System.Int32]' to type 'System.Collections.Generic.List1 [সিস্টেম.আইন্ট 32 ]' টাইপের অবজেক্টটি কাস্ট করতে অক্ষম । "

আমি সম্পত্তি এনটিটিআইডস সঠিকভাবে ম্যাপ করেছি কিনা তা নিশ্চিত নই। গাইড করুন।

ধন্যবাদ!


আপনি কি নিশ্চিতভাবেই অন্তর্দের একটি তালিকা চান, সম্পর্কিত সংস্থার একটি তালিকা নয়?
মৌরিসিও শেফার

উত্তর:


161

কংক্রিট সংগ্রহের পরিবর্তে সংগ্রহ ইন্টারফেস ব্যবহার করুন, সুতরাং এনএইচবারনেট এটি নিজস্ব সংগ্রহ বাস্তবায়ন দিয়ে এটি ইনজেক্ট করতে পারে।

এই ক্ষেত্রে, IList<int>পরিবর্তে ব্যবহার করুনList<int>


4
ধন্যবাদ! সমস্যা সমাধান করুন। আপনি যখন বলবেন 'এনএইচবারনেট এটি নিজস্ব সংগ্রহ বাস্তবায়ন দিয়ে এটি ইনজেক্ট করতে পারে' তখন আপনি কি দয়া করে কিছুটা ব্যাখ্যা করতে পারেন? '
ইনুতান

এটি এখানে ব্যাখ্যা করা হয়েছে: surcombe.com/nhibernate-1.2/api/html/…
শেফার

4
এই লিঙ্কটি আর বিদ্যমান নেই। একটি আপডেট করা একটি বা সংক্ষিপ্ত সামগ্রীটি অনেক প্রশংসিত হবে।
নয়েচ


4
মৃত লিঙ্ক সম্পর্কে অভিযোগ করে স্ট্যাকওভারফ্লোতে থাকা বহু লোকের দ্বারা আমি বিভ্রান্ত হয়ে পড়েছি। আর্কাইভ.অর্গের কথা কেউ শুনেনি? web.archive.org/web/20091105034326/http://elliottjorgensen.com/…
মরিসিও শেফার

0

আমি দেখতে পেয়েছি যে ICollection<T>যেখানে কাজ IList<T>হয়নি সেখানে কাজ করে ।

আমি কোনও এনহাইবারনেট উইজার্ড নই, তবে আমি অন্য যে কেউ এই ইস্যুতে অবতীর্ণ হতে পারে তার জন্য একটি হাড় ফেলতে চাইছি।


এটি আপনার সংগ্রহ কীভাবে ম্যাপ করা হয় তার উপর নির্ভর করে। জন্য bagআপনি ব্যবহার করতে পারেন IList<T>এবং সেট জন্য -ISet<T>
রোমান Artiukhin
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.