views:

119

answers:

3

Hello,

Lets assume im writing a program, my program has its own entities and such. And since I'm using an OOP .Net language (C#, but could be F# or Iron Python), my objects have weird OOP traits like inheritance, references to other objects, and hierarchical relationships.

Naturally i want to save these all to my God damn database, and obviously i can't because its relational, and came form God damn mathematicians who spent too much time learning about the Set Theory, God damn them.

Now i can use an ORM layer but that would be a little bit of a nightmare, because ill have to write all sorts of XMLs and such.

No. What i want is a database with object oriented capabilities! perhaps even an Object-Relational Database!

But! i also want it to have a natural API and bindings in my .Net world.

I want to be able to write a class Cat, and to be able to tell me database to save my Cat, and I would. if it would have a Linq provider it would be very useful too.

Any ideas?

+2  A: 

Raven DB I think is what you are looking for. There are other document nosql databases around. CouchDB, MongoDB also but these are not native .NET implementations.

B.T.W ORM layers are not a nightmare any more. Far from it, have you looking into L2S, EF and Fluent NHibernate? None of these require XML configuration. Each has its plus and minus points but all are perfectly usable.

madcapnmckay
i think what im looking for is PostgreSQL or something similar with a very good provider for .Net. also i dont have a problem with SQL, as long as the DB itself can store Objects
Hellfrost
A: 

For such a scenario you could consider a document database such as Raven: http://ravendb.net/

GarethOwen
i dont intend on saving documents... i intend on saving very consistent objects
Hellfrost
What do you mean by very consistent? What comes out of Raven is a .NET object.
madcapnmckay
+2  A: 

Well there are a quite a few object-databases out with different flavors. Some are easy to uses optimized for embedded use cases, like db4o, perst.net etc. Or bigger databases like Versant Object Database, Objectiviy Database etc. Google it for more such databases.

Anyway, such object database let you store object and try to preserve the semantics. So they can store arrays, references, inheritance etc. This allows a very native way to deal with data. Most of the also provide a LINQ provider.

I also recommend to look at document database, like RavenDB or MongoDB. (Also google for more alternatives). Those also have a very natural interface and you can store very complex object-graphs in it. However they are 'document'-oriented. This means that store and update documents, which means in practice that you store and object a bunch of objects together and update those updates together.

Gamlor