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

时间:2013-10-10 20:07:03

标签: c# data-access-layer dotnetnuke-module petapoco dotnetnuke-7

我正在使用DNN 7 +中的DAL2。

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

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

[PrimaryKey("myField")]

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

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

“看着天空和屏幕一样多!”

1 个答案:

答案 0 :(得分:1)

DAL2不支持复合键。

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

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

“看着天空和屏幕一样多!”