我正在DNN 7+中使用DAL2。
我有一个数据库表,其中有一个由2-varchar(50)字段创建的主键。
在对象的属性中声明多字段主键的正确方法是什么? 我通常会这样做:
[PrimaryKey("myField")]
我应该只添加第二个PrimaryKey属性吗?
问题的第二部分是如何从数据库中获取数据。 我想使用GetById()函数,因为它包含了缓存,但似乎不支持多个字段。我是否一直在使用Find()方法并手动处理缓存,或者选择使用多字段主键的对象的最佳方式是什么?
“像看屏幕一样看天空!”
DAL2不支持复合密钥。
我发现绕过这个限制的最好方法是修改数据库表。我使用Auto increment int'id'字段作为主键,并对要用作复合键的字段设置唯一约束。
这将需要使用.Find()方法来防止缓存。如果需要缓存,则必须手动进行。当手动设置缓存时,也应该手动清除它。如果使用存储库技术,请确保在更新或删除对象时清除缓存。