StackExchange.Exceptional icon indicating copy to clipboard operation
StackExchange.Exceptional copied to clipboard

Add Oracle-Store implementation.

Open DerHulk opened this issue 6 years ago • 4 comments

Dear Mr Craver, i have implemented a datastore to Oracle-DB. I hope this will help other develpers in future if the need oracle support. Maybe you are interested to include it to your great Exceptional lib. What i don't know is if the oracle licence for the oracle client (Nuget Oracle.ManagedDataAccess.Core) is a problem for the licence of your project.

DerHulk avatar Jan 08 '20 19:01 DerHulk

Is something wrong with my pullrequest?

DerHulk avatar Feb 01 '20 10:02 DerHulk

@DerHulk Hey there - I just unfortunately haven't had time to sync with Marc on this to investigate some issues. The major issue I see is the way Oracle handles types and since it has no native GUID, we have to convert it. Unfortunately, these type handlers are global in Dapper. This means the library would be changing (and potentially breaking) all other GUID behavior in an application - that's a pretty nasty side-effect and I think we have to find a way to remedy that issue before it's viable to do in a library. This would need changes in Dapper (which we're planning v3 on as time allows) and is likely something that's a dependency here before moving forward.

That issue being what it is, the PR itself is great - adding tests and formats and...just very well done! I'm going to sync with @mgravell this week on ideas.

NickCraver avatar Feb 01 '20 14:02 NickCraver

Ok thanks for response, i was't sure that i have missing something. I have seen the problem with the guid-mapping (first i thought i could solve it with the TypeHandler but this was not 100% successfull) but i normally use ef as orm so for me it was not a problem. Hope you find a good solution.

DerHulk avatar Feb 02 '20 19:02 DerHulk

There is other way to fool dapper without changing GUID handler is using a private property (supported by Dapper).

public Guid Foo {get;set;}

public string FooString { get { return Foo.ToString("N"); } set { Foo = new Guid(value); } } And in your query, alias the column as FooString.

kilroyFR avatar Apr 27 '20 20:04 kilroyFR