Я пытаюсь получить консольное приложение F #, которое запрашивает MS SQL SERVER, работающий в Docker. Я использую SQLProvider для запуска оператора select в отношении БД, вначале только вытаскивая int ID. Он отлично работает в Windows, но не в контейнере Docker. Она терпит неудачу с сообщением об ошибке: ИмяНе удалось прочитать даты с F # TypeProvider
System.ArgumentOutOfRangeException: No mapping exists from SqlDbType Date to a known DbType.
Параметр: SqlDbType
Я попытался как моно: 4.2.3.4 и Teh FSharp/FSharp Docker изображения. Я также собираю библиотеку FSharp.Core со мной.
Любая помощь будет оценена по достоинству. Спасибо
Редактировать: Контейнер Docker работает на Linux, с моно версией 4.22.2.
Это мой запрос:
type private connection = SqlDataProvider<ConnectionString="CONNECTIONSTRING",
DatabaseVendor=Common.DatabaseProviderTypes.MSSQLSERVER,
UseOptionTypes=true>
let private ctx = connection.GetDataContext()
let private application = "E-Mail an PH - eFeedback"
let history =
query {
for eh in ctx.Dbo.ActionHistoryEmail do
join gah in ctx.Dbo.GenericActionHistory on (eh.Id = gah.Id)
where (eh.Application = application)
select gah.Id
}
|> Seq.toList
StackTrace:
System.TypeInitializationException: The type initializer for '<StartupCode$Company-EFeedbackExport>.$Repository' threw an exception. ---> System.ArgumentOutOfRangeException: No mapping exists from SqlDbType Date to a known DbType.
Parameter name: SqlDbType
at System.Data.SqlClient.SqlParameter.SetSqlDbType (SqlDbType type) <0x411a3080 + 0x00afb> in <filename unknown>:0
at System.Data.SqlClient.SqlParameter.set_SqlDbType (SqlDbType value) <0x411a3040 + 0x00017> in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.Data.SqlClient.SqlParameter:set_SqlDbType (System.Data.SqlDbType)
at [email protected] (Int32 providerType) <0x411a17c0 + 0x0008b> in <filename unknown>:0
at [email protected] (IEnumerable`1& next) <0x411999f0 + 0x007bb> in <filename unknown>:0
at Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T].MoveNextImpl() <0x41199790 + 0x00069> in <filename unknown>:0
at Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T].System-Collections-IEnumerator-MoveNext() <0x41199760 + 0x00017> in <filename unknown>:0
at Microsoft.FSharp.Collections.SeqModule.ToList[T] (IEnumerable`1 source) <0x411991c0 + 0x001ea> in <filename unknown>:0
at FSharp.Data.Sql.Providers.MSSqlServer.createTypeMappings (IDbConnection con) <0x411761d0 + 0x00097> in <filename unknown>:0
at FSharp.Data.Sql.Providers.MSSqlServerProvider.FSharp-Data-Sql-Common-ISqlProvider-CreateTypeMappings (IDbConnection con) <0x411761a0 + 0x00013> in <filename unknown>:0
at <StartupCode$FSharp-Data-SqlProvider>[email protected] (System.String runtimeAssembly, System.String resolutionPath, System.String[] referencedAssemblies, DatabaseProviderTypes providerType, System.String owner, FSharp.Data.Sql.Runtime.SqlDataContext this, Microsoft.FSharp.Core.Unit unitVar0) <0x401883d0 + 0x00109> in <filename unknown>:0
at FSharp.Data.Sql.Runtime.SqlDataContext..ctor (System.String typeName, System.String connectionString, DatabaseProviderTypes providerType, System.String resolutionPath, System.String[] referencedAssemblies, System.String runtimeAssembly, System.String owner, CaseSensitivityChange caseSensitivity) <0x401880b0 + 0x00153> in <filename unknown>:0
at <StartupCode$Company-EFeedbackExport>.$Repository..cctor() <0x40187650 + 0x002ab> in <filename unknown>:0
--- End of inner exception stack trace ---
at Program.main (System.String[] args) <0x4016de00 + 0x00087> in <filename unknown>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: The type initializer for '<StartupCode$Company-EFeedbackExport>.$Repository' threw an exception. ---> System.ArgumentOutOfRangeException: No mapping exists from SqlDbType Date to a known DbType.
Parameter name: SqlDbType
at System.Data.SqlClient.SqlParameter.SetSqlDbType (SqlDbType type) <0x411a3080 + 0x00afb> in <filename unknown>:0
at System.Data.SqlClient.SqlParameter.set_SqlDbType (SqlDbType value) <0x411a3040 + 0x00017> in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.Data.SqlClient.SqlParameter:set_SqlDbType (System.Data.SqlDbType)
at [email protected] (Int32 providerType) <0x411a17c0 + 0x0008b> in <filename unknown>:0
at [email protected] (IEnumerable`1& next) <0x411999f0 + 0x007bb> in <filename unknown>:0
at Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T].MoveNextImpl() <0x41199790 + 0x00069> in <filename unknown>:0
at Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1[T].System-Collections-IEnumerator-MoveNext() <0x41199760 + 0x00017> in <filename unknown>:0
at Microsoft.FSharp.Collections.SeqModule.ToList[T] (IEnumerable`1 source) <0x411991c0 + 0x001ea> in <filename unknown>:0
at FSharp.Data.Sql.Providers.MSSqlServer.createTypeMappings (IDbConnection con) <0x411761d0 + 0x00097> in <filename unknown>:0
at FSharp.Data.Sql.Providers.MSSqlServerProvider.FSharp-Data-Sql-Common-ISqlProvider-CreateTypeMappings (IDbConnection con) <0x411761a0 + 0x00013> in <filename unknown>:0
at <StartupCode$FSharp-Data-SqlProvider>[email protected] (System.String runtimeAssembly, System.String resolutionPath, System.String[] referencedAssemblies, DatabaseProviderTypes providerType, System.String owner, FSharp.Data.Sql.Runtime.SqlDataContext this, Microsoft.FSharp.Core.Unit unitVar0) <0x401883d0 + 0x00109> in <filename unknown>:0
at FSharp.Data.Sql.Runtime.SqlDataContext..ctor (System.String typeName, System.String connectionString, DatabaseProviderTypes providerType, System.String resolutionPath, System.String[] referencedAssemblies, System.String runtimeAssembly, System.String owner, CaseSensitivityChange caseSensitivity) <0x401880b0 + 0x00153> in <filename unknown>:0
at <StartupCode$Company-EFeedbackExport>.$Repository..cctor() <0x40187650 + 0x002ab> in <filename unknown>:0
--- End of inner exception stack trace ---
at Program.main (System.String[] args) <0x4016de00 + 0x00087> in <filename unknown>:0
Docker не имеет ничего общего с этим. Если ваше изображение Docker работает в Windows, вы все равно запускаете Windows. Если он работает в Linux, вы используете ядро Mono или DotNet. Отправьте свой код, полное сообщение об исключении, включая стек вызовов (вызовите Exception.ToString()) и укажите, на каком .NET вы запускаете. –
Укажите полное исключение, включая стек вызовов. Если это ошибка в Mono, стек вызовов покажет, какой метод вызвал исключение –