1

我正在DNN 7+中使用DAL2。如何在DNN 7+中使用DAL2中的复合键?

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

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

[PrimaryKey("myField")] 

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

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

回答

1

DAL2不支持组合键。

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

这将需要使用防止缓存的.Find()方法。如果需要缓存,则必须手动完成。手动设置缓存时,也应该手动清除缓存。如果您使用存储库技术,请确保在更新或删除对象时清除缓存。 “看起来和天幕一样多!”