Aaron Smith · Aug 12, 2020

dotnet core

Is there an InterSystems supported dotnet core library or community contributed repo on the horizon?  At this time we are exploring installing the ODBC driver in our containers but would rather use more robust solution.

0 824
Discussion (15)4
Log in or sign up to continue

Thank you very much for the quick turn-around.  Before sending this over to our DevOps team, I noticed that this applies to the IRIS platform.  Does this approach also apply to Cache as well?

This is an InterSystems IRIS functionality.

I recommend upgrading your Caché application to InterSystems IRIS.

Thank you for the reply.  Unfortunately that is a really big ask.  The Cache platform is at the central of our business and this is only a single small app that is being containerized.  Based on other threads, we do not appear to be the only ones requiring the support.

Did you consider to run that single app on IRIS and connect to your Caché over ECP ?
It works in both directions.

Appreciate the response.  Looking for dotnet core, we are deploying to Linux based containers.

Took a look at the latest IRIS library, it is not dotnet standard nor core.  It is actually based on .NET 4.5 which is not even supported by MSFT any longer.  Looking at the structure of the Cache v. IRIS, it appears to be very similar.  I wonder if it is a "port".

As more and more clients of Intersystems are moving to modern architectures that are not coupled to the OS, it would be in their interest to spend a bit of time porting their existing libraries to dotnet core.

Hi, Peter, i see this must need .net framwork 2,3or 4, but how it support for .net 5 on centos, when i using  InterSystems.Data.CacheClient.dll   and the write this code it makes error 

the code is here

public System.Data.DataSet exeSqlForDataSet(string QueryString)

           string strConnection = "Server=" + "" + ";Port=1972; Namespace=" + "IMEDPACS" + "; Password=" + "sys" + "; User ID = " + "_system" + ";Pooling=true;"; ;

           var conn = new CacheConnection(strConnection);
                if (conn.State != ConnectionState.Open)
                CacheCommand cmd = new CacheCommand();
                cmd.Connection = this.conn;
                if (inTransaction)
                    cmd.Transaction = trans;
                DataSet ds = new DataSet();
                CacheDataAdapter ad = new CacheDataAdapter();
                cmd.CommandText = QueryString;
                ad.SelectCommand = cmd;
                return ds;
            catch (Exception e2)
                throw e2;

this exception is here 

System.UnauthorizedAccessException: Access to the path '/root/0000/00/Debug/dbnet5.0' is denied.
---> System.IO.IOException: Permission denied
--- End of inner exception stack trace ---
at System.IO.Enumeration.FileSystemEnumerator1.CreateDirectoryHandle(String path, Boolean ignoreNotFound) at System.IO.Enumeration.FileSystemEnumerator1.Init()
at System.IO.Enumeration.FileSystemEnumerator1..ctor(String directory, Boolean isNormalized, EnumerationOptions options) at System.IO.Enumeration.FileSystemEnumerable1..ctor(String directory, FindTransform transform, EnumerationOptions options, Boolean isNormalized)
at System.IO.Enumeration.FileSystemEnumerableFactory.UserFiles(String directory, String expression, EnumerationOptions options)
at System.IO.Directory.InternalEnumeratePaths(String path, String searchPattern, SearchTarget searchTarget, EnumerationOptions options)
at System.IO.Directory.GetFiles(String path, String searchPattern)
at Microsoft.DotNet.CommandFactory.ProjectFactory.GetMSBuildProjPath(String projectDirectory)
at Microsoft.DotNet.CommandFactory.ProjectFactory.GetMSBuildProj(String projectDirectory, NuGetFramework framework, String configuration, String outputPath)
at Microsoft.DotNet.CommandFactory.ProjectToolsCommandResolver.ResolveFromProjectTools(CommandResolverArguments commandResolverArguments)
at Microsoft.DotNet.CommandFactory.ProjectToolsCommandResolver.Resolve(CommandResolverArguments commandResolverArguments)
at Microsoft.DotNet.CommandFactory.CompositeCommandResolver.Resolve(CommandResolverArguments commandResolverArguments)
at Microsoft.DotNet.CommandFactory.CommandResolver.TryResolveCommandSpec(ICommandResolverPolicy commandResolverPolicy, String commandName, IEnumerable1 args, NuGetFramework framework, String configuration, String outputPath, String applicationName) at Microsoft.DotNet.CommandFactory.CommandFactoryUsingResolver.Create(ICommandResolverPolicy commandResolverPolicy, String commandName, IEnumerable1 args, NuGetFramework framework, String configuration, String outputPath, String applicationName)
at Microsoft.DotNet.Cli.Program.ProcessArgs(String[] args, TimeSpan startupTime, ITelemetry telemetryClient)
at Microsoft.DotNet.Cli.Program.Main(String[] args)

what can I do for this?

Thank you for the reply.  I apologize for not following.  Which .net core library are you referring to?

Is there anyone in the community that has any visibility?  "Upgrade to a different product" is not a feasible solution.

We use Caché 2015 with the CacheProvider. 
We connect with a CacheConnection Object to the Database and use the Method GenSourceFile to generate C# Classes from the Caché Classes. We then compile this c# Code into a DLL and use it together with the InterSystems.Data.CacheClient.dll for working with the Caché Objects in C#. Eventhought the DLL is compiled with .net 4.5 it works great together with .net core 3.2 ASP.NET.  But we only use it on windows plattforms. So maybe not working on linux?!

Thank you very much for the quick turn-around.