我正在测试OrmLite,我正在研究如何处理创建的表中的索引。
如果你想把某些东西标记为索引,唯一,auto_increment等,我找到的唯一方法是通过属性,如下所示:
Index(Unique = true)] // Creates Unique Index
public string Email { get; set; }
但是,OrmLite / ServiceStack声明:
- 按惯例将POCO类1:1映射到RDBMS表,不需要任何属性。
因此我希望在不使用属性的情况下有其他方法来定义这些东西?具有类定义的库应与OrmLite完全分离。
这可行吗?
编辑:
扩展方法AddAttributes似乎由于某种原因而无法运行:
答案 0 :(得分:1)
按照惯例,意味着OrmLite将根据预期从模型中推断出架构。但是,如果您想添加任何自定义项,例如在任意字段上添加索引,那么您需要告诉OrmLite它们。由于OrmLite是代码优先的ORM,因此属性是如何为模型修饰其他功能。
在下一个 OrmLite v4 中,您可以通过在启动时动态添加它们来添加与POCO分离的这些属性,例如:
typeof(Poco).GetProperty("Email")
.AddAttributes(new IndexAttribute { Unique = true });
与使用[Index(Unique = true)]