0

我正在我的 API 中创建一个使用DapperDommelFluentMap的服务。数据库是 Microsoft SQL Server。我有一个端点需要将记录插入到没有键的表中。该表在以下实体中的描述如下:

public class MyTable
{ 
    public int SomeProperty{ get; set; }
    public int AnotherProperty{ get; set; }
}

该表在数据库中只有这两列。没有钥匙。

如果可能的话,我想将 Dapper 与 Dommel 一起使用,以便在此表中插入一条记录。

我已经创建了地图并注册了它们,一切都很好,适用于其他有 Key 的表。但是这个没有。

每次调用 DommelInsertAsync方法时,我都会收到以下错误消息:

失败:Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware 4 执行请求时发生未处理的异常。System.InvalidOperationException:找不到类型“MyProject.Models.MyTable”的关键属性。

已经知道可以仅使用 Dapper 并手动创建 SQL 查询并执行它

我在问 Dommel 是否有解决方案。

提前致谢。

4

1 回答 1

1

您需要指定一个密钥。ORM 需要键,以便他们知道要插入、删除或更新哪一行。ORM 根本不可能在没有密钥的情况下工作。Dommel 不是 SQL 生成器,它与 Dapper 一起工作,因此它需要密钥。

无论如何,该类确实有键 - 这是一个带有复合键的多对多表。Dommel 识别Key可用于指定复合键的属性。

在 Dommel 的单元测试中,ProductsCategories 类用于表示具有复合键的多对多关系:

public class ProductsCategories
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int ProductId { get; set; }

    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int CategoryId { get; set; }
}
于 2021-10-18T17:51:03.760 回答