将模型另存为数据库对象并稍后进行分配

时间:2016-07-14 14:44:54

标签: c# asp.net-mvc sql-server-2008

我在一个页面上有几个表单,每个表单都在其自己的ViewModel中为该页面的一个MasterModel中定义。问题是,如果我提交任何表单,则会分配相关的ViewModel,我可以处理该表单,但我也丢失了之前提交的表单的信息。

现在我正在做的是从数据库获取数据并手动分配以前的ViewModel(表单)或使用页面中的AJAX调用来填充其他表单的缺失数据..但我的问题是,是否可以存储整个模型例如在一些JSON / XML /?格式化并在以后使用它?

例如

database.saveModel(model.FirstForm.ToJson())
model.FirstForm.FromJson(database.getModel())

2 个答案:

答案 0 :(得分:1)

帮助我的解决方案是:

MemoryStream memorystream = new MemoryStream();
BinaryFormatter binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(memorystream, model);
byte[] bytes = memorystream.ToArray();

现在我可以将字节保存到VARBINARY(MAX) sql列。

我还可以将其转换回模型

var result = Database.SqlQuery<byte[]>(...).First();
MemoryStream memorystreamd = new MemoryStream(result);
BinaryFormatter binaryFormatter = new BinaryFormatter();
model = binaryFormatter.Deserialize(memorystreamd) as CustomerVM;

但是对于未来的项目,我将使用带部分视图的AJAX。我在这里找到了很好的文章https://cmatskas.com/update-an-mvc-partial-view-with-ajax/

答案 1 :(得分:0)

en.wikipedia.org/wiki/BSON

BSON文档(对象)由有序的元素列表组成。每个元素由字段名称,类型和值组成。字段名称是字符串。类型包括:

  • 字符串
  • 整数(32位或64位)
  • double(64位IEEE 754浮点数)
  • date(自Unix纪元以来的整数毫秒数)
  • 字节数组(二进制数据)
  • 布尔值(true和false)
  • BSON对象
  • BSON阵列
  • Javascript代码
  • MD5二进制数据
  • 正则表达式

BSON类型名义上是JSON类型的超集(JSON没有日期或字节数组类型,例如[3]),但没有通用&#34;数字&#34;输入JSON的类型。

ASP.NET Web API 2.1中的BSON支持

  1. 什么是BSON?
  2. 在服务器上启用BSON
  3. 示例HTTP会话
  4. 将BON与HttpClient一起使用
  5. 序列化顶级基元类型
  6. 其他资源
  7. http://www.asp.net/web-api/overview/formats-and-model-binding/bson-support-in-web-api-21

    C#和.NET MongoDB驱动程序

    Driver Features

    MongoDB驱动程序

      

    ...

    BSON Library

      

    具有序列化基础结构的独立BSON库,可用于构建高性能序列化程序。有关BSON库的文档,请参阅BSON参考。

    核心库

      

    ...