Fluent HiberNate - Oracle Bağlantısı

Abdullah
9 Eylül 2019 Pazartesi
0

Merhaba Arkadaşlar,

Bu gün hep MSSQL üzerinde denediğim bir yapıyı Oracle üzerinde nasıl uygulanacağını anlatacağım.

Fluent Hibernate Nedir?

Fluent Hibernate esasında bir ORM aracıdır. Sql cümlecikleri kullanmadan veritabanına insert,update,delete, list işlemlerinin yapılmasına olanak sağlar.
Bir nevi kendi Entity Framework'ünüzü  yazmanızı sağlar. Entity Framework'den farkı kontrolün daha fazla geliştiricide olmasıdır. 
CodeFirst veya DBFirst mantığı direkt uygulanabilir. Çokca kullanmışlığım vardır.  Gerçi en son Entity Framework ile karşılaştırdığımda sadece insert,update işlemlerinde 
Daha performanslı çalışmıştı. Hatta şurada performansların tam rakamları mevcut, inceleyebilirsiniz. Hasılı kontrol tamamen bende olsun diyorsanız önerebileceğim bir yapıdır.

Nhibernate ile arasındaki farka gelince, Nhibernate'e daha çok Java teknolojilerinden aşinayız. arasındaki tek fark Map işleminin xml tabanlı değil de direk Entity katmanında yapılmasıdır.

 

Gelelim nasıl uygulanacağına;

 

Ben bir web form projesi oluşturdum; Deneme yapacağımdan 3 katmanlı yapı kullandım. Daha büyük projelerde Bussines katmanı da eklenerek 4. katman da oluşturulabilir.
Ayrıca projede DBFirst mantığı kullanmaktayım.

Dikkat edilmesi gereken en önemli şeylerden biri  Entity katmanında classs yapısının doğru yazılmış olmasıdır.
Class adının veritabanındaki Tablo adıyla aynı olmasına dikkat edin. Şart değil ama sonradan başınızı ağrıtabilir.

Gördüğünüz gibi Class 'ın altında bir MAP classı da mevcut burada veritabanı alanlarıyla bir eşleştirme yapılmaktadır.

  public class OTM_TEST
    {

        public virtual int USERID { get; set; }

        public virtual string EMAIL { get; set; }

        public virtual string FULLNAME { get; set; }

    }
    public class OTM_TESTMap : ClassMap<OTM_TEST>
    {
        public OTM_TESTMap()
        {
            Id(x => x.USERID, "USERID").GeneratedBy.Increment();
            Map(x => x.EMAIL);
            Map(x => x.FULLNAME);
            Table("OTM_TEST");
        }
    }

 

Veritabanı bağlantı işlemleri nasıl yapılır?

        private static ISessionFactory SessionFactoryAnalyze
        {
            get
            {
                try
                {
                    if (sessionFactory == null)
                    {
                        sessionFactory = Fluently.Configure()
                         .Database(OracleConfiguration.Oracle10
                         .ConnectionString(ConnectionString).DefaultSchema("TESTDB").Provider<NHibernate.Connection.DriverConnectionProvider>().Driver<NHibernate.Driver.OracleClientDriver>())
                        .Mappings(m => m.FluentMappings
                            .AddFromAssemblyOf<OTM_TEST>())
                        .ExposeConfiguration(config =>
                        {
                            SchemaExport schemaExport = new SchemaExport(config);
                        })
                        .BuildSessionFactory();
                    }
                    return sessionFactory;
                }
                catch (Exception ex)
                {
                   
                    return sessionFactory;
                }
            }
        }

Burada dikkat edilmesi gereken kod bloğu aşağıdaki alandır. Bu kod bloğunu yazmasanız bile MSSQL'de çalışır . Ama Oracle'da aynı sonucu alamazsınız.

DefaultSchema("TESTDB").Provider<NHibernate.Connection.DriverConnectionProvider>().Driver<NHibernate.Driver.OracleClientDriver>())

Bunun dışında tek dikkat edilmesi gereken oracle kurulumunuza göre connection stringi web config'e eklemektir. Diğer konular standart yapıdır. Rahatlıklabir çok kaynaktan erişebilirsiniz.

İsteyen olursa projenin kaynak kodlarını da paylaşırım. 

İyi günler...

 



Yorum yaz