I suggest you ...

Mono compatibility

77 votes
Vote
Sign in
Check!
(thinking…)
Reset
or sign in with
  • facebook
  • google
    Password icon
    I agree to the terms of service
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    Dmitri MaximovAdminDmitri Maximov (Project manager, Xtensive LLC) shared this idea  ·   ·  Admin →

    4 comments

    Sign in
    Check!
    (thinking…)
    Reset
    or sign in with
    • facebook
    • google
      Password icon
      I agree to the terms of service
      Signed in as (Sign out)
      Submitting...
      • HermanHerman commented  · 

        We tried using a DataObjects.NET data layer (compiled on windows with postsharp) on Mono/OS X and it failed to even connect to SQL Server.

        Looks like NHibernate is ORM of choice.

        Error
        ====

        Unhandled Exception: System.IO.IOException: Read failure ---> System.Net.Sockets.SocketException: Operation timed out.
        at System.Net.Sockets.Socket.Receive (System.Byte[] buffer, Int32 offset, Int32 size, SocketFlags flags) [0x00000] in <filename unknown>:0
        at System.Net.Sockets.NetworkStream.Read (System.Byte[] buffer, Int32 offset, Int32 size) [0x00000] in <filename unknown>:0
        --- End of inner exception stack trace ---
        at System.Net.Sockets.NetworkStream.Read (System.Byte[] buffer, Int32 offset, Int32 size) [0x00000] in <filename unknown>:0
        at Mono.Data.Tds.Protocol.TdsComm.Read (System.Byte[] buffer, Int32 offset, Int32 count) [0x00000] in <filename unknown>:0

        Unhandled Exception: Xtensive.Orm.StorageException: SQL error occured.
        SQL error details 'Type: Unknown;'
        Original message 'The object was used after being disposed.' ---> System.ObjectDisposedException: The object was used after being disposed.
        at System.Net.Sockets.NetworkStream.CheckDisposed () [0x00000] in <filename unknown>:0
        at System.Net.Sockets.NetworkStream.Write (System.Byte[] buffer, Int32 offset, Int32 size) [0x00000] in <filename unknown>:0
        at Mono.Data.Tds.Protocol.TdsComm.SendPhysicalPacket (Boolean isLastSegment) [0x00000] in <filename unknown>:0
        at Mono.Data.Tds.Protocol.TdsComm.SendPacket () [0x00000] in <filename unknown>:0
        at Mono.Data.Tds.Protocol.Tds.ExecuteQuery (System.String sql, Int32 timeout, Boolean wantResults) [0x00000] in <filename unknown>:0
        at Mono.Data.Tds.Protocol.Tds80.Execute (System.String commandText, Mono.Data.Tds.TdsMetaParameterCollection parameters, Int32 timeout, Boolean wantResults) [0x00000] in <filename unknown>:0
        at Mono.Data.Tds.Protocol.Tds.Execute (System.String sql) [0x00000] in <filename unknown>:0
        at System.Data.SqlClient.SqlTransaction.Rollback (System.String transactionName) [0x00000] in <filename unknown>:0
        at System.Data.SqlClient.SqlTransaction.Rollback () [0x00000] in <filename unknown>:0
        at System.Data.SqlClient.SqlTransaction.Dispose (Boolean disposing) [0x00000] in <filename unknown>:0
        at System.Data.Common.DbTransaction.Dispose () [0x00000] in <filename unknown>:0
        at (wrapper remoting-invoke-with-check) System.Data.Common.DbTransaction:Dispose ()
        at Xtensive.Sql.SqlConnection.Rollback () [0x00000] in <filename unknown>:0
        at Xtensive.Orm.Providers.Sql.StorageDriver.RollbackTransaction (Xtensive.Orm.Session session, Xtensive.Sql.SqlConnection connection) [0x00000] in <filename unknown>:0
        --- End of inner exception stack trace ---
        at Xtensive.Orm.Providers.Sql.StorageDriver.RollbackTransaction (Xtensive.Orm.Session,Xtensive.Sql.SqlConnection) <0x000c3>
        at Xtensive.Orm.Providers.Sql.SessionHandler.RollbackTransaction (Xtensive.Orm.Transaction) <0x00053>
        at Xtensive.Orm.Session.Rollback (Xtensive.Orm.Transaction) <0x00047>
        at Xtensive.Orm.Session.RollbackTransaction (Xtensive.Orm.Transaction) <0x000c7>
        at Xtensive.Orm.Transaction.Rollback () <0x0007f>
        at Xtensive.Orm.TransactionScope.Dispose () <0x0008f>
        at Xtensive.Core.DisposableExtensions.DisposeSafely (System.IDisposable) <0x0001e>
        at Xtensive.Orm.Building.Builders.DomainBuilder.BuildDomain (Xtensive.Orm.Configuration.DomainConfiguration,Xtensive.Orm.Building.Builders.DomainBuilderConfiguration) <0x0028f>
        at Xtensive.Orm.Upgrade.UpgradingDomainBuilder.BuildStageDomain (Xtensive.Orm.Upgrade.UpgradeStage) <0x00137>
        at Xtensive.Orm.Upgrade.UpgradingDomainBuilder.Build (Xtensive.Orm.Configuration.DomainConfiguration) <0x001bb>
        at Xtensive.Orm.Domain.Build (Xtensive.Orm.Configuration.DomainConfiguration) <0x00013>
        at BW.Cranewatch.UI.Desktop.OSX.DomainManager.CreateSqlServerDomain () <0x000bf>
        at BW.Cranewatch.UI.Desktop.OSX.DomainManager..ctor () <0x0000b>
        at BW.Cranewatch.UI.Desktop.OSX.DomainManager.get_Instance () <0x00083>
        at BW.Cranewatch.UI.Desktop.OSX.CranewatchScope..ctor () <0x0000b>
        at BW.Cranewatch.UI.Desktop.OSX.MainWindowController.ButtonPressed (MonoMac.AppKit.NSButton) <0x0002b>
        at (wrapper dynamic-method) object.[BW.Cranewatch.UI.Desktop.OSX.MainWindowController.Void ButtonPressed(MonoMac.AppKit.NSButton)] (MonoMac.Foundation.NSObject,MonoMac.ObjCRuntime.Selector,MonoMac.AppKit.NSButton) <0x00033>
        at (wrapper native-to-managed) object.[BW.Cranewatch.UI.Desktop.OSX.MainWindowController.Void ButtonPressed(MonoMac.AppKit.NSButton)] (MonoMac.Foundation.NSObject,MonoMac.ObjCRuntime.Selector,MonoMac.AppKit.NSButton) <0x000fb>
        at (wrapper managed-to-native) MonoMac.AppKit.NSApplication.NSApplicationMain (int,string[]) <0x00003>
        at MonoMac.AppKit.NSApplication.Main (string[]) <0x00017>

      • Anonymous commented  · 

        There is a lack of heavy-weight ORM's for MonoTouch, and this would fill in a vacuum for that platform that is desperately needed.

      • HermanHerman commented  · 

        Support for MonoTouch SQLite would be exceptional.

      Feedback and Knowledge Base