首页 > 数据库 >dotnet efcore sqlite entity

dotnet efcore sqlite entity

时间:2024-01-15 22:26:19浏览次数:31  
标签:sqlite set get Column float efcore dotnet True public

dotnet使用ef core读写sqlite数据库

要使用EF Core读写SQLite数据库,您需要安装以下NuGet包:

Microsoft.EntityFrameworkCore.Sqlite
Microsoft.EntityFrameworkCore.Tools

以下是一个示例代码,它演示了如何使用EF Core读写SQLite数据库:

using System;
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;

namespace MyNamespace
{
    public class MyContext : DbContext
    {
        public DbSet<MyEntity> MyEntities { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlite("Data Source=mydatabase.db");
        }
    }

    public class MyEntity
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

    public class Program
    {
        static void Main(string[] args)
        {
            using (var context = new MyContext())
            {
                context.Database.EnsureCreated();

                var entity = new MyEntity { Name = "John Doe" };
                context.MyEntities.Add(entity);
                context.SaveChanges();

                var entities = context.MyEntities;
                foreach (var e in entities)
                {
                    Console.WriteLine($"Id: {e.Id}, Name: {e.Name}");
                }
            }
        }
    }
}

在上面的代码中,我们创建了一个名为MyContext的类,该类继承自DbContext类。我们还创建了一个名为MyEntity的类,该类表示数据库中的实体。
在MyContext类中,我们重写了OnConfiguring方法,并使用UseSqlite方法配置SQLite数据库。在Program类中,我们使用MyContext类创建了一个数据库上下文,并使用EnsureCreated方法创建了数据库。
我们还创建了一个名为entity的实体,并使用Add方法将其添加到数据库中。然后,我们使用SaveChanges方法保存更改,并使用MyEntities属性获取所有实体。
最后,我们使用foreach循环遍历所有实体,并将其打印到控制台。
希望这可以帮助您!

不想使用using语句块读写数据库

要在不使用using语句块的情况下使用EF Core读写SQLite数据库,您可以使用以下代码:

using System;
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;

namespace MyNamespace
{
    public class MyContext : DbContext
    {
        public DbSet<MyEntity> MyEntities { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlite("Data Source=mydatabase.db");
        }
    }

    public class MyEntity
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

    public class Program
    {
        static void Main(string[] args)
        {
            var context = new MyContext();
            context.Database.EnsureCreated();

            var entity = new MyEntity { Name = "John Doe" };
            context.MyEntities.Add(entity);
            context.SaveChanges();

            var entities = context.MyEntities;
            foreach (var e in entities)
            {
                Console.WriteLine($"Id: {e.Id}, Name: {e.Name}");
            }

            context.Dispose();
        }
    }
}

在上面的代码中,我们创建了一个名为MyContext的类,该类继承自DbContext类。我们还创建了一个名为MyEntity的类,该类表示数据库中的实体。

在MyContext类中,我们重写了OnConfiguring方法,并使用UseSqlite方法配置SQLite数据库。在Program类中,我们使用MyContext类创建了一个数据库上下文,并使用EnsureCreated方法创建了数据库。

我们还创建了一个名为entity的实体,并使用Add方法将其添加到数据库中。然后,我们使用SaveChanges方法保存更改,并使用MyEntities属性获取所有实体。

最后,我们使用foreach循环遍历所有实体,并将其打印到控制台。请注意,我们在程序结束时调用了context.Dispose()方法来释放资源。

将下面python中的sqlalchemy的entity改成C#v所ef core的entity


class Battery(MappedBase):
    """电池电量模型类"""
    __tablename__ = "battery"
    id: Mapped[int] = mapped_column(primary_key=True, index=True, autoincrement=True, comment="主键id")
    ip: Mapped[str] = mapped_column(String(20), nullable=False, comment="AGV车的IP地址")
    name: Mapped[str] = mapped_column(String(20), nullable=True, comment="AGV车的名称")
    # level
    start_level: Mapped[float] = mapped_column(Float, default=0, nullable=True, comment="初始电量值")
    end_level: Mapped[float] = mapped_column(Float, default=0, nullable=True, comment="结束电量值")
    # temp
    start_temp: Mapped[float] = mapped_column(Float, default=0, nullable=True, comment="开始充电时的电池温度")
    end_temp: Mapped[float] = mapped_column(Float, default=0, nullable=True, comment="结束充电时的电池温度")
    # voltage
    start_voltage: Mapped[float] = mapped_column(Float, default=0, nullable=True, comment="开始充电时的电池电压")
    end_voltage: Mapped[float] = mapped_column(Float, default=0, nullable=True, comment="结束充电时的电池电压")
    # cycle
    start_cycle: Mapped[int] = mapped_column(Integer, default=0, nullable=True, comment="开始充电的充电次数")
    end_cycle: Mapped[int] = mapped_column(Integer, default=0, nullable=True, comment="结束充电的充电次数")
    # time
    start_time: Mapped[datetime] = mapped_column(DateTime(timezone=True), nullable=True, comment="充电的初始时间")
    end_time: Mapped[datetime] = mapped_column(DateTime(timezone=True), nullable=True, comment="充电的初始时间")
    # duration
    duration: Mapped[int] = mapped_column(Integer, default=0, nullable=True, comment="充电时长,单位s")
    # interrupt
    interrupt: Mapped[bool] = mapped_column(Boolean, nullable=True, default=0, comment="是否是手动中断充电,默认是自动离开充电")
    charging: Mapped[bool] = mapped_column(Boolean, nullable=True, default=0, comment="是否正在充电")

以下是将上述Python代码转换为C# EF Core的实体类的示例代码:

using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace MyNamespace
{
    [Table("battery")]
    public class Battery
    {
        [Key]
        [Column("id")]
        public int Id { get; set; }

        [Required]
        [Column("ip", TypeName = "varchar(20)")]
        public string Ip { get; set; }

        [Column("name", TypeName = "varchar(20)")]
        public string Name { get; set; }

        [Column("start_level", TypeName = "float")]
        public float StartLevel { get; set; }

        [Column("end_level", TypeName = "float")]
        public float EndLevel { get; set; }

        [Column("start_temp", TypeName = "float")]
        public float StartTemp { get; set; }

        [Column("end_temp", TypeName = "float")]
        public float EndTemp { get; set; }

        [Column("start_voltage", TypeName = "float")]
        public float StartVoltage { get; set; }

        [Column("end_voltage", TypeName = "float")]
        public float EndVoltage { get; set; }

        [Column("start_cycle", TypeName = "int")]
        public int StartCycle { get; set; }

        [Column("end_cycle", TypeName = "int")]
        public int EndCycle { get; set; }

        [Column("start_time", TypeName = "datetime")]
        public DateTime StartTime { get; set; }

        [Column("end_time", TypeName = "datetime")]
        public DateTime EndTime { get; set; }

        [Column("duration", TypeName = "int")]
        public int Duration { get; set; }

        [Column("interrupt", TypeName = "bit")]
        public bool Interrupt { get; set; }

        [Column("charging", TypeName = "bit")]
        public bool Charging { get; set; }
    }
}

在上面的代码中,我们创建了一个名为Battery的类,该类表示要映射到数据库表的实体。我们还使用Table、Key和Column属性来指定表名、主键和列名。
请注意,我们使用Required属性将Ip属性标记为必需的,并使用TypeName属性指定列的数据类型。我们还使用Column属性指定列名。

标签:sqlite,set,get,Column,float,efcore,dotnet,True,public
From: https://www.cnblogs.com/zhuoss/p/17966528

相关文章

  • .NET中轻松应用SQLite:零配置数据库引擎的完美指南
     SQLite是一种轻量级的嵌入式数据库引擎,它在.NET中被广泛使用。SQLite是一个零配置的数据库引擎,不需要服务器,可以直接在应用程序中使用。下面是一个简单的示例,演示如何在.NET中使用SQLite,并提供了常见的查询、增加、修改和删除功能。首先,你需要在项目中安装 System.D......
  • 纪念一下,在国产麒麟linux下跑dotnet8,运行起来了
    纪念一下,在国产麒麟linux下跑dotnet8,运行起来了1、用vs2022的dotnet8写的跨平台web项目,编译完成。2、在麒麟linux里安装dotnet: 参考微软官方的net8安装说明,  https://dotnet.microsoft.com/zh-cn/download/dotnet/8.0  https://dotnet.microsoft.com/zh-cn/downl......
  • Winform中使用Fleck实现Websocket服务端并读取SQLite数据库中数据定时循环群发消息
    场景Winform中使用Websocket4Net实现Websocket客户端并定时存储接收数据到SQLite中:Winform中使用Websocket4Net实现Websocket客户端并定时存储接收数据到SQLite中-Winform中操作Sqlite数据增删改查、程序启动时执行创建表初始化操作:Winform中操作Sqlite数据增删改查、程序启动时执......
  • Winform中使用Websocket4Net实现Websocket客户端并定时存储接收数据到SQLite中
    场景SpringBoot+Vue整合WebSocket实现前后端消息推送:SpringBoot+Vue整合WebSocket实现前后端消息推送_websocketvue3.0springboot往客户端推送上面实现ws推送数据流程后,需要在windows上使用ws客户端定时记录收到的数据到文件中,这里文件使用SQLite数据库进行存储。Winform中操作S......
  • 【VSCode】CMake Language Support 总是下载 .NET 超时,但又不想升级dotnet
    错误信息Error:Couldnotresolvedotnetpath!Anerroroccurredwhileinstalling.NET(6.0):.NETAcquisitionFailed:Installationfailed:Error:.NETinstallationtimedout.Youmayneedtochangethetimeouttimeifyouhaveaslowconnection.Pleasesee:h......
  • PowerDotNet平台化软件架构设计与实现系列(17):PCRM个人用户管理平台
    个人用户管理是业务系统中非常基础且重要的一个公共服务系统,我们写的绝大多数应用都和个人用户或会员有关,用户(会员)数据安全无小事,必须有一个完备的用户管理平台系统。因为不同公司的主业务不同,个人用户管理的侧重点也会有不同,PowerDotNet这里介绍的个人用户管理平台,只是个人用......
  • SQLite
    SQLite是一个轻量级的数据库系统,常用于嵌入式系统和桌面应用程序。以下是使用SQLite的基本步骤:安装SQLite:首先,确保你的系统上安装了SQLite。大多数Linux发行版和macOS都预装了SQLite。对于Windows,你可以从SQLite的官方网站下载。打开数据库连接:在Python中,你可以使用sqlite3模块来与......
  • window如何安装sqlite3数据库
    1.SQLite学习笔记一:Windows下安装SQLite 一、简介• SQLite是一个轻型的数据库,无需任何服务,无需任何配置的绿色数据库。• SQLite是一个进程内库,它实现了一个自包含、无服务器、零配置、事务性SQL数据库引擎。SQLite的代码在公共域中,因此可以免费用于任何目的,无论是商业还......
  • pycharm配置sqlite3数据库 可视化插件
    1.首先你需要创建一个sqlite3数据库,创建好数据库以后会生成一个.db后缀名或者.sqlite后缀的数据库文件。如果你不知道window如何安装sqlite3数据库,请参考我的这篇文章:如果你不知道如何使用sqlite3,请参考我的这篇文章: 3.要在pycharm中打开.sqlite后缀的数据库文件和打开.db......
  • Android期末大作业:使用AndroidStudio开发图书管理系统APP(使用sqlite数据库)
    AndroidStudio开发项目图书管理系统项目视频展示:引言现在是一个信息高度发达的时代,伴随着科技的进步,文化的汲取,人们对于图书信息的了解与掌握也达到了一定的高度。尤其是学生对于知识的渴求更是与日俱增。图书馆作为学生学习知识的重要场所,作为信息资源的集散地,图书和用户借阅资......