我正在为 Autodesk Navisworks 编写一个 C# 插件,它将遍历一堆 3D 元素并将它们的属性(现在的元素的类别和系列)写入 Azure 数据库。
我使用 Dapper 作为 ORM。当我尝试在数据库中插入数据时,Navisworks 崩溃并给出未处理的异常。
我用普通的 sql 尝试了相同的过程,一切正常,所以我很确定是 Dapper 的 Execute 函数给出了异常。
这是我的对象:
internal class NavisTest
{
public string Category { get; set; }
public string Family { get; set; }
public NavisTest(string category, string family)
{
Category = category;
Family = family;
}
}
这是sql命令:
const string navisTestSql = "insert into NavisTest " +
"(Category, Family) " +
"values (@category, @family);";
这是主要逻辑:
using (SqlConnection connection = new SqlConnection(
NavisDbSettings.ConnectToDB().ConnectionString))
{
// Open connection to db
connection.Open();
using (SqlTransaction transaction = connection.BeginTransaction())
{
NavisTest navisTest = new NavisTest(
"Wall",
"Concrete Wall 01");
connection.Execute(NavisDbSqlCommands.navisTestSql, navisTest, transaction: transaction);
// Commit database transaction
transaction.Commit();
}
}
因此,当它运行时 Navisworks 只会崩溃,但如果我使用普通的 SqlCommand 一切正常。(此外,我基本上复制了代码以从我拥有的另一个应用程序插入到数据库中,该应用程序运行良好)
此外,如果我尝试将代码包含在 try-catch 子句中,它仍然会失败(这是一个未处理的异常)。
我真的不明白我做错了什么。
有任何想法吗?