Winform里添加SqliteSqlite数据库引用的步骤

一、添加System.Data.SQLite引用

 

 

 二、添加linq2db引用

 

 

 三、新建实体类

    [Table("SysInfo")]
    public partial class SysInfo
    {
        [Column("Id"), PrimaryKey]
        [System.ComponentModel.DataAnnotations.Schema.DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity)]
        public int? Id { get; set; }
        [Column("TypeName"), Nullable] public string TypeName { get; set; }
        [Column("InfoName"), Nullable] public string InfoName { get; set; }
        [Column("InfoValue"), Nullable] public string InfoValue { get; set; }
        [Column("CreateDate"), Nullable] public DateTime? CreateDate { get; set; }
    }

四、添加数据库访问上下文

    public partial class SqliteDBContext : LinqToDB.Data.DataConnection
    {
        public SqliteDBContext(bool Password = false) : base("SQLite", "DataSource=" + AppDomain.CurrentDomain.BaseDirectory + "\\DB\\Data.db" + ";")
        {
            InitDataContext();
        }
        public SqliteDBContext(string providerName, string configuration) : base(providerName, configuration)
        {
            InitDataContext();
        }
        partial void InitDataContext();
        public ITable<SysInfo> SysInfo { get { return this.GetTable<SysInfo>(); } }
    }

五、读取、插入、更新

        [TestMethod]
        public void TestMethodRead()
        {
            try
            {
                SqliteDB.SqliteDBContext context = new SqliteDB.SqliteDBContext();
                var first = context.SysInfo.First();

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        [TestMethod]
        public void TestMethodInsert()
        {
            try
            {
                SqliteDB.SqliteDBContext context = new SqliteDB.SqliteDBContext();
                SqliteDB.SysInfo info = new SqliteDB.SysInfo
                {
                    Id = null,
                    InfoName = "a",
                    InfoValue = "",
                    TypeName = "分类"
                };
                int i = context.Insert(info);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        [TestMethod]
        public void TestMethodUpdate()
        {
            try
            {
                SqliteDB.SqliteDBContext context = new SqliteDB.SqliteDBContext();
                SqliteDB.SysInfo info = context.SysInfo.Where(c => c.Id == 4).FirstOrDefault();
                if (info != null)
                {
                    info.InfoName = "测试更新";
                }
                context.Update(info);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

六、sqlite建表证句

CREATE TABLE SysInfo (
    [Id]            integer PRIMARY KEY autoincrement,                -- 设置主键
    [TypeName]          varchar(50),
    [InfoName]         varchar (50),
        [InfoValue]         varchar (50),
    [CreateDate]      datetime default (datetime('now', 'localtime'))    -- 时间
);

 

特别注意:由于主键是自增的,所以实体中的主键要允许为空   public int? Id { get; set; }    

在新增数据的时候赋一个空值如下:

 

                SqliteDB.SysInfo info = new SqliteDB.SysInfo
                {
                    Id = null,
                    InfoName = "a",
                    InfoValue = "",
                    TypeName = "分类"
                };

 

posted @ 2020-06-09 18:06  星星c#  阅读(1908)  评论(0编辑  收藏  举报