我正在构建一个使用SQLite作为存储数据库的Windows8C#/XAML应用程序,并尝试使用SQLite-net语法创建多个表。
根据我到目前为止的研究,一个表是基于一个类创建的。首先,我通过以下方式创建了一个"Account“类:
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",
})
);
}我想创建多个account表,但是db.CreateTable<Account>()语法只创建了一个表,并且使用db.Insert().将数据插入到列中。我不知道在哪里输入表本身的名称。
如何基于Account类创建多个表,即一个名为"BusinessAccounts“的表和另一个名为"PersonalAccounts”的表?
有没有办法用SQLite-net做到这一点?或者我需要以某种方式显式地写出SQLite命令?
发布于 2013-07-13 08:06:41
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() {...});需要注意的是,上面的代码是未经测试的。您需要确保表的创建是正确的(例如,使用正确的主键和自动增量字段)。
发布于 2017-05-17 18:30:44
这个答案似乎已经过时了,在SQLite-net中,你现在可以使用一个类的属性来覆盖表名,例如:
[SQLite.Table("table_customers")]
public class Customer
{
[MaxLength(3)]
public string code { get; set; }
[MaxLength(255)]
public string name { get; set; }
}因此它将创建/更新表。
https://stackoverflow.com/questions/17625435
复制相似问题