怪奇物语

怪奇物语

首页 新随笔 联系 管理

对象序列化

要将一个序列化对象存储起来,您可以使用C#中的序列化和反序列化功能。以下是一个示例代码,它演示了如何将一个序列化对象存储到文件中:

using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

namespace MyNamespace
{
    [Serializable]
    public class MyObject
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

    public class Program
    {
        static void Main(string[] args)
        {
            var myObject = new MyObject { Id = 1, Name = "John Doe" };

            var formatter = new BinaryFormatter();
            using (var stream = new FileStream("myobject.bin", FileMode.Create, FileAccess.Write))
            {
                formatter.Serialize(stream, myObject);
            }

            using (var stream = new FileStream("myobject.bin", FileMode.Open, FileAccess.Read))
            {
                var deserializedObject = (MyObject)formatter.Deserialize(stream);
                Console.WriteLine($"Id: {deserializedObject.Id}, Name: {deserializedObject.Name}");
            }
        }
    }
}

在上面的代码中,我们创建了一个名为MyObject的类,该类表示要序列化的对象。我们还创建了一个名为Program的类,该类包含一个名为Main的方法。
在Main方法中,我们创建了一个名为myObject的对象,并使用BinaryFormatter类将其序列化到文件中。然后,我们使用BinaryFormatter类将文件反序列化为对象,并将其打印到控制台。
希望这可以帮助您!

将下面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属性指定列名。

posted on 2024-01-15 22:15  超级无敌美少男战士  阅读(114)  评论(0)    收藏  举报