Our company is developing a new application, which has a somewhat large business data object at its core. We decided to try out Entity Framework with code first to abstract the database from the application, but things have gone awry. The business object is composed of approximately 60 classes, and in total around 600 properties; however, it is a tree structure and no crossover/backtracking pointers are present.
Our test was to add a single, uninitialized instance of the class to the database. Using DbContext.Add on our data structure took 8 minutes on my development machine. Is this the expected performance of an object this size? Is there a list of common problems that causes poor performance with Entity Framework? I feel I need some help with this.
Some more data points: There are 27 elements in the first level under the root of the business object. With 3 elements present (the rest commented out), the time to add is 4.5 seconds. With 5 elements present, it is 11.8 seconds. With 8 elements present, it is 1 minute 12.5 seconds. Obviously, the size of these elements varies significantly, but these does seem to indicate a systematic problem of some sort.
So, figured out the problem. While proceeding with NHibernate, we came across a structural error which was some experimental code. The category was subscribing to the PropertyChanged events of its children, which caused NHibernate to crash.
Which is GOOD! That told us there was actually a problem. Entity Framework just ran forever without any indication that it was a problem we could do something about.
So anyway, we are going to continue to use NHibernate for the time being. We like the control we have over the database structure we get by using it.