1

我在 DNN 7+ 中使用 DAL2。

我有一个带有从 2-varchar(50) 字段创建的主键的数据库表。

在对象的属性中声明多字段主键的正确方法是什么?
我通常这样做:

[PrimaryKey("myField")]

我应该只添加第二个 PrimaryKey 属性吗?

问题的第二部分是如何从数据库中取出数据。
我想使用 GetById() 函数,因为它包含缓存,但它似乎不支持多个字段。我是否坚持使用 Find() 方法并手动处理缓存,或者选择使用多字段主键的对象的最佳方法是什么?

“像屏幕一样仰望天空!”

4

1 回答 1

1

DAL2 不支持复合键。

我发现解决此限制的最佳方法是修改数据库表。我对主键使用 Auto-increment int 'id' 字段,并在我希望用作复合键的字段上设置唯一约束。

这将需要使用 .Find() 方法来防止缓存。如果需要缓存,则必须手动完成。手动设置缓存时,也应手动清除。如果您使用存储库技术,请确保在更新或删除对象时清除缓存。

“像屏幕一样仰望天空!”

于 2013-10-21T23:21:00.033 回答