代码之家  ›  专栏  ›  技术社区  ›  RacerNerd

如何在DNN 7+中使用DAL2复合密钥?

  •  1
  • RacerNerd  · 技术社区  · 11 年前

    我正在DNN 7+中使用DAL2。

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

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

    [PrimaryKey("myField")]
    

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

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

    “像看屏幕一样看天空!”

    1 回复  |  直到 11 年前
        1
  •  1
  •   RacerNerd    11 年前

    DAL2不支持复合密钥。

    我发现绕过这个限制的最好方法是修改数据库表。我使用Auto increment int'id'字段作为主键,并对要用作复合键的字段设置唯一约束。

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

    “像看屏幕一样看天空!”