将ServiceStack OrmLite中的外键对象的哈希集与SQL Server一起使用

本文关键字:Server SQL 一起 哈希集 对象 OrmLite ServiceStack | 更新日期: 2023-09-27 18:25:44

我必须使用关系对象进行多对多数据库设计,但我需要确保没有重复。我曾希望我可以将相关对象的集合定义为HashSet,但ServiceStack不喜欢它

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只能有唯一的Bars和与其相关的Options。从C#的角度来看,HashSet非常适合这样做,但ServiceStack正在寻找HashSet类型上的相关实体Id。

我有什么办法可以做到这一点而不会让ServiceStack抓狂吗?

将ServiceStack OrmLite中的外键对象的哈希集与SQL Server一起使用

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