1

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

如果您想将某些内容标记为索引、唯一、自动增量等,我发现的唯一方法是通过属性,如下所示:

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

然而,OrmLite/ServiceStack 声明:

  • 按照约定将 POCO 类 1:1 映射到 RDBMS 表,无需任何属性。

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

这是可行的吗?


编辑:

由于某种原因,扩展方法 AddAttributes 似乎不起作用:

在此处输入图像描述

4

1 回答 1

1

按照惯例,意味着 OrmLite 将按照预期从模型中推断模式。但是,如果您想添加任何自定义项,例如在任意字段上添加索引,则需要告诉 OrmLite 相关信息。由于 OrmLite 是代码优先的 ORM,因此属性是如何为模型装饰附加功能。

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

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

这将与装饰您的财产具有相同的效果[Index(Unique = true)]

于 2013-11-10T10:02:10.363 回答