如何使用 Ecto 插入到 SqlServer table?

How do you insert to a SqlServer table with Ecto?

我正在尝试将 Ecto 连接到现有的 SqlServer 数据库。 SqlServer 想要自动填充主键字段,所以我在插入时无法提供值。我最初将该字段标记为必需,但即使在我删除它之后,它构造的 INSERT 查询仍然有该字段并试图将 :nil 放入其中。所以我仍然遇到错误。有没有我应该设置模型的特定方法,或者我应该传递给 INSERT 以使其工作的东西?如何插入到 SqlServer?

我正在使用 tds_ecto 适配器。我得到的错误是:

Cannot insert explicit value for identity column in table 'TextMessageHistory' when IDENTITY_INSERT is set to OFF

看来问题出在我在模型中声明主键的方式上。我用过:

@primary_key {:TextMessageHistoryId, :id, []}

但后来它不明白数据库会自动生成密钥。所以我改成了:

@primary_key {:TextMessageHistoryId, :id, autogenerate: true}

然后它停止尝试将内容插入主键。