我正在构建一个使用SQLite作为存储数据库的Windows 8 C#/ XAML应用,并且尝试使用SQLite-net语法创建多个表。

根据到目前为止的研究,基于类创建了一个表。首先,我通过以下方式创建了“帐户”类:

public class Account
{
    [PrimaryKey, AutoIncrement]
    public int ID { get; set; }

    public string Name { get; set; }
    public string Type { get; set;}
}


然后创建一个表,然后在代码中通过以下方式输入初始数据:

    private static readonly string _dbPath =
        Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "data.sqlite");


        using (var db = new SQLite.SQLiteConnection(_dbPath))
        {
            db.CreateTable<Account>();

            db.RunInTransaction(() =>

               db.Insert(new Account()
                    {
                        Name = "MyCheckingAccount",
                        Type = "Checking",
                    })
                    );
        }


我想创建多个帐户表,但是db.CreateTable<Account>()语法仅创建一个表,并且数据通过db.Insert().插入到列中,但看不到在何处输入表本身的名称。

如何创建多个表,即一个基于Account类的名为“ BusinessAccounts”的表,另一个名为“ PersonalAccounts”的表?

有没有办法用SQLite-net做到这一点?还是我需要以某种方式显式地写出SQLite命令?

最佳答案

Sqlite-Net使用类名称来创建表以及更新数据。要执行所需的操作,您需要创建单独的类。避免重复公共字段的一种方法是使用继承:

public class Account
{
    [PrimaryKey, AutoIncrement]
    public int ID { get; set; }

    public string Name { get; set; }
    public string Type { get; set;}
}

public class BusinessAccounts : Account { }

public class PersonalAccounts : Account { }


要创建表:

db.CreateTable<BusinessAccounts>();
db.CreateTable<PersonalAccounts>();


要插入数据:

db.Insert(new BusinessAccounts() {...});
db.Insert(new PersonalAccounts() {...});


请注意,上面的代码未经测试。您需要确保正确创建了表格(例如,使用正确的主键和自动递增字段)。

10-08 07:54
查看更多