Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Marten定义多个Id列?_C# - Fatal编程技术网

C# 使用Marten定义多个Id列?

C# 使用Marten定义多个Id列?,c#,C#,我目前正在为此对象使用Marten的默认Id实现 public class DbOBject { public string Id { get; set; } public string Name { get; set; } public int Type { get; set; } } 现在我想定义Id和类型列als标识符,这可能吗?我不相信有一种完全直接的方法可以做到这一点 Marten需要一个Id字段(或标记为标识符的

我目前正在为此对象使用Marten的默认Id实现

    public class DbOBject
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public int Type { get; set; }
   }

现在我想定义Id和类型列als标识符,这可能吗?

我不相信有一种完全直接的方法可以做到这一点

Marten需要一个Id字段(或标记为标识符的属性)

我个人会创建一个新字段,它是Id和类型的组合(使用连接或任何您认为可读性最好的方法)。然后用它作为身份

如果您对实施Marten接口感到满意,并坚持采用更清洁的解决方案,我建议您阅读以下文档:

接口和实现的链接已断开,但以下是Marten身份生成的工作链接:


但是,这将要求您仅为这个特定类使用一个单独的密钥生成器,这实际上可能会降低代码的可读性(因为您还应该为它配置一个特定的存储,以便使用新的自定义生成器)。

谢谢,我已经实现了第一个解决方案

  public class DbOBject
    {
        public string Id { get { return BusinessValue + "_" + Type.ToString(); } }
        public string Name { get; set; }
        public string BusinessValue{ get; set; }
        public int Type { get; set; }
   }
Id是一个独特的商业价值,但事实证明并不是那么独特。因此,我添加了bussisess值作为属性,并使用id作为该业务值和类型的组合