using System.Data.Entity;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization;
public static void Main()
using (var ctx = new SchoolContext())
SmsMessageModels s1 = new SmsMessageModels { Id=1, Name = "s1"};
SmsMessageModels s2 = new SmsMessageModels { Id=2, Name = "s2"};
ctx.SmsMessageModels.AddRange(new List<SmsMessageModels> { s1,s2});
WeChatTemplateSettings w1 = new WeChatTemplateSettings { Id=3, Name = "w1"};
WeChatTemplateSettings w2 = new WeChatTemplateSettings { Id=4, Name = "w2"};
ctx.WeChatTemplateSettings.AddRange(new List<WeChatTemplateSettings> { w1,w2});
MessagePushSettings m1 = new MessagePushSettings {Id=5, Name = "m1"};
MessagePushSettings m2 = new MessagePushSettings {Id=6, Name = "m2"};
ctx.MessagePushSettings.AddRange(new List<MessagePushSettings> { m1,m2});
for(int i =3;i<=500;i++){
ctx.MessagePushSettings.Add( new MessagePushSettings {Id=i, Name = "m"+i});
m2.WeChatTemplateSetting = w2;
JsonSerializerSettings setting = new JsonSerializerSettings()
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
Formatting = Formatting.None
Serialize("DataFile.dat", ctx.MessagePushSettings.ToList());
Console.WriteLine("序列化");
var s = ReadAllText("DataFile.dat");
Console.WriteLine("大小:"+s.Length+"字节");
Console.WriteLine("反序列化");
public static void Serialize(string fileName,object value)
FileStream fs = new FileStream(fileName, FileMode.Create);
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, value);
catch (SerializationException e)
Console.WriteLine("Failed to serialize. Reason: " + e.Message);
public static void WriteFile(string path)
File.WriteAllText(path, ".NET Fiddle is AWESOME!!!");
public static string ReadAllText(string path)
return File.ReadAllText(path);
static void Deserialize()
FileStream fs = new FileStream("DataFile.dat", FileMode.Open);
BinaryFormatter formatter = new BinaryFormatter();
value = (object) formatter.Deserialize(fs);
catch (SerializationException e)
Console.WriteLine("Failed to deserialize. Reason: " + e.Message);
string s1=JsonConvert.SerializeObject(value);
Console.WriteLine("大小:"+s1.Length+"字节");
public class SchoolContext: DbContext
public SchoolContext() : base(FiddleHelper.GetConnectionStringSqlServer())
public DbSet<MessagePushSettings> MessagePushSettings { get; set; }
public DbSet<SmsMessageModels> SmsMessageModels { get; set; }
public DbSet<WeChatTemplateSettings> WeChatTemplateSettings { get; set; }
public class MessagePushSettings
public int Id { get; set; }
public string Name { get; set; }
[ForeignKey("SmsMessageModel")]
public int? SmsMessageModelId { get; set; }
[ForeignKey("WeChatTemplateSetting")]
public int? WeChatTemplateSettingsId { get; set; }
[InverseProperty("MessagePushSettings")]
public SmsMessageModels SmsMessageModel { get; set; }
[InverseProperty("MessagePushSettings")]
public WeChatTemplateSettings WeChatTemplateSetting { get; set; }
public class SmsMessageModels
public int Id { get; set; }
public string Name { get; set; }
[InverseProperty("SmsMessageModel")]
public ICollection<MessagePushSettings> MessagePushSettings { get; set; }
public class WeChatTemplateSettings
public int Id { get; set; }
public string Name { get; set; }
[InverseProperty("WeChatTemplateSetting")]
public ICollection<MessagePushSettings> MessagePushSettings { get; set; }