Nhibernate Configure And Buildsessionfactory Time?
Mar 30, 2010
I'm using Nhibernate as the OR/M tool for an asp.net application and the startup performance is really frustrating. Part of the problem is definitely me in my lack of understanding but I've tried a fair bit (understanding is definitely improving) and am still getting nowhere.
Currently ANTS profiler has that the Configure() takes 13-18 seconds and the BuildSessionFActory() as taking about 5 seconds. From what i've read, these times might actually be pretty good, but they were generally talking about hundreds upon hundreds of mapped entities...this project only has 10.
I've combined all the mapping files into a single hbm mapping file and this did improve things but only down to the times mentioned above...
I guess, are there any "Traps for young players" that are regularly missed...obvious "I did this/have you enabled that/exclude file x/mark file y as z" etc...
I'll try the serialize the configuration thing to avoid the Configure() stage, but I feel that part shouldn't be that long for that amount of entities and so would essentially be hiding a current problem...
I've been trying to follow the directions on the NHProf site but can't seem to make it work. What am I missing?I put a log4net configuration section in my web.config:
It looks likes if I don't visit my low traffic site for a day, it takes a long time for the first page to load. I believe it's probably because IIS7 shuts down the application when it receives no requests for a certain length of time. I have a dedicated server so I have all the access required to change things in IIS
I am getting the "Unable to convert MySQL date/time value to System.DateTime" error because from what I can tell I have a record with 0000-00-00 00:00:00. Now while the data should never be that (it should be null) there are cases when this might happen and I don't want my entire application to crash because of it. I am using NHibernate and I tried adding change my connection string to allow zero datetime so the connection string configuration looks like:
<property name="connection.connection_string"> Server=localhost;Database=user_system;User ID=root;Password=root; Allow Zero Datetime=true; </property>
However I still receive that error. How can I allow NHibernate to allow zero values for timestamp/datetime/data/time?
My web application has hosted on the canada server but my all clients are indians.So, as I am using System.datetime.Now to store all the dates in application.Obviously, it is displaying the canadian time instead of india time.How can i do it?Is there not any gloabl settings that we can do in our web.config file so that it indicates to the server at run time which time zone to execute..?Or any other suitable alternate?
i have to listen my mail server for every 30 min. i have a distribution list and i want to count number of email comes for that distribution list and no of replies goes from the outlook for every 30 minutes. also i need to get the time difference between the replied time with arrived time of the mail. so show me some sample code
I want to use NHibernate with Asp.net 3.5 but i don't know how to use it.I search on Google but couldn't find the complete explanation about why to use NHibernate,Advantages of using it and integration with Asp.net projects.
I am about to give up on this pos...unless somebody here simply gives me the right code to fix my problem. I'm tired of running in circles, and scouring the internet with no progress at all.
Problem: not updating collections with FK's.
Example:
Forum forum = new Forum("Sample"); category.AddForum(forum); categoryRepository.Update(category); <- fails with transient object error for forum with no CategoryId. Mapped right using References<Category> and HasMany<Forum>. Conventions are as follows.
Now, I've tried every possible setting for inverse, all the different cascades, on both sides. Nothing works. It just flat fails, telling me it can't insert NULL for Forum.CategoryId (field, not entity prop).
I've been reading up on DDD a little bit, and I am confused how this would fit in when using an ORM like NHibernate. Right now I have a .NET MVC application with fairly "fat" controllers, and I'm trying to figure out how best to fix that. Moving this business logic into the model layer would be the best way to do this, but I am unsure how one would do that.
My application is set up so that NHibernate's session is managed by an HttpModule (gets session / transaction out of my way), which is used by repositories that return the entity objects (Think S#arp arch... turns out a really duplicated a lot of their functionality in this). These repositories are used by DataServices, which right now are just wrappers around the Repositories (one-to-one mapping between them, e.g. UserDataService takes a UserRepository, or actually a Repository). These DataServices right now only ensure that data annotations decorating the entity classes are checked when saving / updating.
In this way, my entities are really just data objects, but do not contain any real logic. While I could put some things in the entity classes (e.g. an "Approve" method), when that action needs to do something like sending an e-mail, or touching other non-related objects, or, for instance, checking to see if there are any users that have the same e-mail before approving, etc., then the entity would need access to other repositories, etc. Injecting these with an IoC wouldn't work with NHibernate, so you'd have to use a factory pattern I'm assuming to get these. I don't see how you would mock those in tests though......................
I am working on NHibernate with oracle in ASP.Net. Now i am trying TDD(Test Driven Development). Can you tell me the best way to develop the TDD for NHibernate with oracle?I am using MbUnit with microdesk but it is not better approach for oracle but SQL server.
I have had no issues retrieving objects, but I've just got to a point with nested objects that I can't figure out.
I am using lazy=true and when accessing a lazy-load collection I get the message:
Initializing[type#3]-failed to lazily initialize a collection of role: [type], no session or session was closed
Even if I call SessionFactory.OpenSession() immediately prior to the object being accessed, it makes no difference. I have also tried accessing the collection in a using ISession block to no luck.
Edit to add - I do have current_session_context_class = web set in web.config, and I am using CurrentSessionContext.Bind on BeginRequest.
Not an MVC app
I read this - don't know how accurate it is, and it is Hibernate:
I am a newcomer to NHibernate and know a bit about WCF. I would like to know how they best play together.Should I make the session per request? Or is there some different tactic that I should be using? What about the lifetime?Where do I set up my sessionfactory? In the global.asax?Can I best create a custom httpmodule or a new servicehostfactory to plug all the goods in?
I've got fluent nhibernate in my application and I'm trying to locate the cause of high memory usage. (I say high, it's 60MB, but it's a web app and it's not very big) Unfortunately it looks like a lot of it is in unmanaged memory, so I started taking things out - and as soon as I took out any calls to nhibernate, the memory usage dropped to 11MB!! Why oh why would it be taking up so much memory? Especially, why would it be taking up unmanaged memory?
I've been 'Googling' this all day and all I can find are posts from people saying "NHibernate eats memory..." and answers that say "no it doesn't, there's no evidence". Are NHibernate people in denial about it?
I'm using Telerik's RadScheduler Control with WebService Binding.
I've used RadScheduler with Server Side Binding which has an event called "OnTimeSlotCreated" which fires every time when a particular time slot creates so that i can access the time slot and get the control (HtmlTableCell Control) to modify it according to the requirement.
But now i'm binding it from client side through WebService which has no such "onClientTimeSlotCreated" event, also these time slots are not having any identity at client side to access.
how to suppress the "AM" in the gridview (template Bind("RideTimeMin", "{0:t}")? Don't tell me to use military time because the function is not "time on a clock"; it's how much time is allowed for a task (in this case the min/max hours & minutes that horses have to complete a 20 mile trail; e.g. 05:00, 05:27, etc). I'm currently accomplishing this in the "ondatabound" function by "..RTmin.Replace("AM","")". I have looked and looked at all the websites that talk about datetime formatting but have yet to find a way to do it upfront in the gridview bind statement.
No records where inserted in my SQL Table after committing the transaction or after the .Flush() method. I checked the code and it follows the correct sequence of codes. I can't seem to find any other way where the error fails.
How can we map a table without having primary key in nHibernate.I have a table which does not contain any primary key, so how can i map this table in .hbm.xml file.
Im currently starting on a project where im using NHibernate for dealing with the DB interactions, and MVC2 (RC) for the front end... and im just wondering if there are any decent tutorials on how to minimize the amount of duplicated validation that needs to be entered to validate thigns in NHibernate and try to mirror those constraints client side.. Ive looked at xVal which looks great, but i cant seem to get it to work and there dont seem to be that many articles about it. Also alot of people are mentioning that its going to become redundant at the MVC level in MVC2 due to the data annotation validation. So im really just after some more information/advice and links on the subject really...
I'm designing my first asp.net web app, using nHibernate as the data provider. i've read a lot about nhibernate in web applications using session-per-request pattern. my application will have a few pages which are 'monitors', meaning- they're updated automatically every few seconds to reflect recent changes to data. in that case, my thought is that opening a session for every request would not make much sense, since I know that an identical request is sure to follow in a few seconds. my thought is that session-per-conversation would make more sense for me, but I'm having trouble finding examples of implementations. I'd appreciate any good resources for how to implement session-per-conversation