多列上的SQLite ORM主键

本文关键字:ORM 主键 SQLite | 更新日期: 2023-09-27 18:26:11

在SQLite中为多个列指定主键的语法是什么?

我正在使用Xamarin在C#中开发一个应用程序,并希望使用SQLite ORM在多个列上使用带有主键的表。

TableObject类定义一个表。我想确保ProductID和RetailerID的组合是唯一的。为了实现这一点,我想将列的组合作为主键。

我试过以下几种:

class TableObject
{
    [PrimaryKey]
    public int ProductID { get; set; }
    [PrimaryKey]
    public int RetailerID { get; set; }
    public decimal Price { get; set; }
}

该表是这样创建的:

database.CreateTable<Cache>();

但我得到了以下例外:

SQLite.Net.SQLiteException:表"TableObject"有多个主键

在"默认"SQLite中,这可以使用:来完成

CREATE TABLE something (column1, column2, column3, PRIMARY KEY (column1, column2));

但是,如何使用SQLite ORM实现这一点呢?

多列上的SQLite ORM主键

这是不受支持的,您可以在这里阅读:https://forums.xamarin.com/discussion/14769/how-do-we-create-a-composite-primary-key-using-sqlite-net-orm

有些人扩展了SQLite PCL以启用一些附加功能https://github.com/softlion/SQLite.Net-PCL