如何使用带有 Dommel 和 FluentMap 的 Dapper 将记录插入没有 Key 的 table?
How to use Dapper with Dommel and FluentMap to Insert a record into a table that doesn't have an Key?
我正在 API 中创建一个使用 Dapper with Dommel and FluentMap 的服务。
数据库是 Microsoft SQL Server。
我有一个端点需要将记录插入到没有密钥的 table 中。
table 在下面的实体中描述如下:
public class MyTable
{
public int SomeProperty{ get; set; }
public int AnotherProperty{ get; set; }
}
这个table在数据库中只有这两列。没有钥匙。
我想将 Dapper 与 Dommel 一起使用,如果可能的话,在此 table 中插入一条记录。
我已经创建并注册了地图,一切都很好并且适用于其他 table 拥有密钥的人。但是这个没有。
每次调用 Dommel InsertAsync
方法时,我都会收到以下错误消息:
fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware4
An unhandled exception has occurred while executing the request.
System.InvalidOperationException: Could not find the key properties for type 'MyProject.Models.MyTable'.
A 已经知道可以仅使用 Dapper 并手动创建 SQL 查询和 execute it .
我在问是否有 Dommel 的解决方案。
提前致谢。
您需要指定一个密钥。 ORM 需要键,以便它们知道要插入、删除或更新哪一行。没有密钥,ORM 根本不可能工作。 Dommel 不是 SQL 生成器,它可以与 Dapper 一起使用,因此它 需要 键。
无论如何 class 确实有键 - 这是一个带有组合键的多对多 table。 Dommel 识别可用于指定复合键的 Key
属性。
在 Dommel 的单元测试中,ProductsCategories class 用于表示与组合键的多对多关系:
public class ProductsCategories
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int ProductId { get; set; }
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int CategoryId { get; set; }
}
我正在 API 中创建一个使用 Dapper with Dommel and FluentMap 的服务。 数据库是 Microsoft SQL Server。 我有一个端点需要将记录插入到没有密钥的 table 中。 table 在下面的实体中描述如下:
public class MyTable
{
public int SomeProperty{ get; set; }
public int AnotherProperty{ get; set; }
}
这个table在数据库中只有这两列。没有钥匙。
我想将 Dapper 与 Dommel 一起使用,如果可能的话,在此 table 中插入一条记录。
我已经创建并注册了地图,一切都很好并且适用于其他 table 拥有密钥的人。但是这个没有。
每次调用 Dommel InsertAsync
方法时,我都会收到以下错误消息:
fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware4 An unhandled exception has occurred while executing the request. System.InvalidOperationException: Could not find the key properties for type 'MyProject.Models.MyTable'.
A 已经知道可以仅使用 Dapper 并手动创建 SQL 查询和 execute it .
我在问是否有 Dommel 的解决方案。
提前致谢。
您需要指定一个密钥。 ORM 需要键,以便它们知道要插入、删除或更新哪一行。没有密钥,ORM 根本不可能工作。 Dommel 不是 SQL 生成器,它可以与 Dapper 一起使用,因此它 需要 键。
无论如何 class 确实有键 - 这是一个带有组合键的多对多 table。 Dommel 识别可用于指定复合键的 Key
属性。
在 Dommel 的单元测试中,ProductsCategories class 用于表示与组合键的多对多关系:
public class ProductsCategories
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int ProductId { get; set; }
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int CategoryId { get; set; }
}