সুতরাং, যেমনটি উল্লেখ করা হয়েছে, ফ্লাট এনএইচবারনেটটির সর্বশেষতম সংস্করণটি ট্রাঙ্ক থেকে সরিয়ে দিয়ে আমাকে যেখানে আমার দরকার সেখানে পৌঁছেছে। সর্বশেষ কোড সহ এনুমের জন্য ম্যাপিংয়ের একটি উদাহরণ:
Map(quote => quote.Status).CustomTypeIs(typeof(QuoteStatus));
কাস্টম টাইপ এটিকে এনাম ব্যবহারের পরিবর্তে এনামের উদাহরণ হিসাবে পরিচালনা করতে বাধ্য করে GenericEnumMapper<TEnum>
।
আমি আসলে একটি প্যাচ জমা দেওয়ার বিষয়টি বিবেচনা করছি যা এনাম ম্যাপারের মধ্যে পরিবর্তন আনতে সক্ষম যা একটি স্ট্রিং অবিরত থাকে এবং এমন একটি যা একটি প্রান্ত অবিরত থাকে যা মনে হয় যে আপনি কোনও কনভেনশন হিসাবে সেট করতে সক্ষম হবেন like
এটি আমার সাম্প্রতিক ক্রিয়াকলাপের উপরে উঠে গেছে এবং এটিকে আরও সহজ করার জন্য ফ্লুয়েন্ট এনএইচবারনেটের নতুন সংস্করণে জিনিসগুলি পরিবর্তিত হয়েছে।
সমস্ত এনামগুলিকে পূর্ণসংখ্যা হিসাবে ম্যাপ করা যায় আপনি এখন এর মতো একটি কনভেনশন তৈরি করতে পারেন:
public class EnumConvention : IUserTypeConvention
{
public bool Accept(IProperty target)
{
return target.PropertyType.IsEnum;
}
public void Apply(IProperty target)
{
target.CustomTypeIs(target.PropertyType);
}
public bool Accept(Type type)
{
return type.IsEnum;
}
}
তারপরে আপনার ম্যাপিংটি কেবলমাত্র:
Map(quote => quote.Status);
আপনি এইভাবে আপনার ফ্লাইট এনএইচবারনেট ম্যাপিংয়ে কনভেনশনটি যুক্ত করুন;
Fluently.Configure(nHibConfig)
.Mappings(mappingConfiguration =>
{
mappingConfiguration.FluentMappings
.ConventionDiscovery.AddFromAssemblyOf<EnumConvention>();
})
.