Servicestack:处理没有属性的索引,自动增量等?

时间:2013-11-10 00:09:07

标签: c# mysql ormlite-servicestack

我正在测试OrmLite,我正在研究如何处理创建的表中的索引。

如果你想把某些东西标记为索引,唯一,auto_increment等,我找到的唯一方法是通过属性,如下所示:

Index(Unique = true)] // Creates Unique Index
public string Email { get; set; }

但是,OrmLite / ServiceStack声明:

  
      
  • 按惯例将POCO类1:1映射到RDBMS表,不需要任何属性。
  •   

因此我希望在不使用属性的情况下有其他方法来定义这些东西?具有类定义的库应与OrmLite完全分离。

这可行吗?


编辑:

扩展方法AddAttributes似乎由于某种原因而无法运行:

enter image description here

1 个答案:

答案 0 :(得分:1)

按照惯例,意味着OrmLite将根据预期从模型中推断出架构。但是,如果您想添加任何自定义项,例如在任意字段上添加索引,那么您需要告诉OrmLite它们。由于OrmLite是代码优先的ORM,因此属性是如何为模型修饰其他功能。

在下一个 OrmLite v4 中,您可以通过在启动时动态添加它们来添加与POCO分离的这些属性,例如:

typeof(Poco).GetProperty("Email")
    .AddAttributes(new IndexAttribute { Unique = true });

与使用[Index(Unique = true)]

装饰您的财产具有相同的效果