Sto sviluppando una piccola applicazione che semplifica la registrazione, lo fa aggiungendo alcuni input a un database MS Access tramite OleDB.SEHException su connessione OleDb aperta
let private conn = new OleDbConnection(connectionString)
let private submitCmd date wins =
let cmd = new OleDbCommand("INSERT INTO ArenaStats ([Date], [Wins]) VALUES (@Date, @Wins)",
Connection = conn, CommandType = CommandType.Text)
["@Date", box date; "@Wins", box wins]
|> List.iter (cmd.Parameters.AddWithValue >> ignore)
cmd
let private submit date wins =
try
conn.Open()
(submitCmd date wins).ExecuteNonQuery() |> ignore
finally
conn.Close()
[<CompiledName "AddEntry">]
let addEntry(date:DateTime, wins:int) =
submit date wins
Ora testare questo tramite FSI funziona esattamente come previsto. Tuttavia, quando utilizzo questa API da un progetto C# WPF, verrà generato un valore SEHException
allo conn.Open()
. Sto davvero grattando la testa sul perché questo sta accadendo.
Modifica
Come suggerito, ho anche cercato di attuare lo stesso codice puramente in C# e nello stesso progetto, si getterà la stessa eccezione nello stesso luogo, ma Vi metto il codice qui sotto per riferimento.
class MsAccessDatabase : IArenaWinsDatabase {
private OleDbConnection connection = new OleDbConnection(connectionString);
private OleDbCommand SubmitCommand(DateTime date, int wins) {
return new OleDbCommand("INSERT INTO ArenaStats ([Date], [Wins]) VALUES (@Date, @Wins)") {
Connection = connection,
CommandType = System.Data.CommandType.Text,
Parameters = {
new OleDbParameter("@Date", date),
new OleDbParameter("@Wins", wins)
}
};
}
public void Submit(DateTime date, int wins) {
try {
connection.Open();
SubmitCommand(date, wins).ExecuteNonQuery();
}
finally {
connection.Close();
}
}
}
Hai provato a sostituirlo con il codice C# equivalente all'interno del tuo WPF p roject e vedere se l'errore si verifica ancora? – AlexFoxGill
Cosa dice l'eccezione? –
@FyodorSoikin '' Componente esterno ha generato un'eccezione'' –