1

我正在为 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 子句中,它仍然会失败(这是一个未处理的异常)。

我真的不明白我做错了什么。

有任何想法吗?

4

0 回答 0