首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLite-net中的Name表

SQLite-net中的Name表
EN

Stack Overflow用户
提问于 2013-07-13 07:24:17
回答 2查看 3.8K关注 0票数 1

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

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

代码语言:javascript
复制
public class Account
{
    [PrimaryKey, AutoIncrement]
    public int ID { get; set; }

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

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

代码语言:javascript
复制
    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命令?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-13 08:06:41

Sqlite-Net使用类名来创建表,以及更新数据。要做你想做的事情,你需要创建单独的类。避免重复公共字段的一种方法是使用继承:

代码语言:javascript
复制
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 { }

要创建表:

代码语言:javascript
复制
db.CreateTable<BusinessAccounts>();
db.CreateTable<PersonalAccounts>();

要插入数据:

代码语言:javascript
复制
db.Insert(new BusinessAccounts() {...});
db.Insert(new PersonalAccounts() {...});

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

票数 2
EN

Stack Overflow用户

发布于 2017-05-17 18:30:44

这个答案似乎已经过时了,在SQLite-net中,你现在可以使用一个类的属性来覆盖表名,例如:

代码语言:javascript
复制
[SQLite.Table("table_customers")]
public class Customer
    {
        [MaxLength(3)]
        public string code { get; set; }

        [MaxLength(255)]            
        public string name { get; set; }
    }

因此它将创建/更新表。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17625435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档