在ServiceStack OrmLite和SQL Server中使用HashSet作为外键对象

时间:2015-12-05 19:11:05

标签: c# servicestack ormlite-servicestack

我不得不使用关系对象解决多对多数据库设计问题,但我需要确保没有重复项。我希望我可以将相关对象的集合定义为HashSet,但ServiceStack不喜欢它。这是我用于OrmLite的POCO的简化版本:

public class Foo
{
    public int Id { get; set; }
    [Reference]
    public HashSet<FooToBar> FooToBars { get; set; }
}

public class Bar
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class FooToBar
{
    public int Id { get; set; }

    [References(typeof(Foo))]
    public int FooId { get; set; }
    [References(typeof(Bar))]
    public int BarId { get; set; }

    // This is the requirement that makes it a little odd
    public string Option { get; set; }
}

分类Foo只能包含与Bar相关的唯一Option s。从C#角度来看,HashSet非常适用于此,但ServiceStack正在HashSet类型上查找相关实体ID。

我有什么方法可以做到这一点,不会让ServiceStack吓坏了吗?

1 个答案:

答案 0 :(得分:1)

引用类型属性需要是List,您仍然可以拥有HashSet属性,但它不能成为引用属性,即它会被POCO吞噬。