Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 将对象保存并还原到数据库_Asp.net_Asp.net Mvc - Fatal编程技术网

Asp.net 将对象保存并还原到数据库

Asp.net 将对象保存并还原到数据库,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,假设我有一个具有以下格式的对象: public class ObjectClassSample { public string product { set; get; } public string Description { set; get; } public int Price { set; get; } } 我试图在数据库中记录的字符串字段中使用相同的对象。有没有可能在不将其转换为JSON的情况下执行此操作,因为我

假设我有一个具有以下格式的对象:

   public class ObjectClassSample
    {
        public string product { set; get; }
        public string Description { set; get; }
        public int Price { set; get; } 
    }

我试图在数据库中记录的字符串字段中使用相同的对象。有没有可能在不将其转换为JSON的情况下执行此操作,因为我一直在思考保存和恢复此操作的最佳方式。

通过某种方式,您必须将该对象转换为字符串,我不确定您为什么不想使用JSON,但要在不转换为JSON的情况下执行此操作,您可以使用自己的易出错格式

下面是一个将对象转换为字符串的示例,用逗号分隔每个属性

几种推广方法

public static class ObjectSampleExtensions
{
    public static ObjectClassSample ToObjectClassSample(this string s)
    {
        var parts = s.Split(new [] { ','});
        return new ObjectClassSample 
        {
              product = parts[0],
              Description = parts[1],
              Price = int.Parse(parts[2])
        };
    }

    public static string ConvertToString(this ObjectClassSample objectToConvertToString)
    {
        const string delimiter = ",";
        var sb = new StringBuilder();
        sb.Append(objectToConvertToString.product);
        sb.Append(delimiter);
        sb.Append(objectToConvertToString.Description);
        sb.Append(delimiter);
        sb.Append(objectToConvertToString.Price);

        return sb.ToString();
    }
}
然后使用

void Main()
{
    var obj = new ObjectClassSample 
    {
        Description = "this is the description",
        Price = 3,
        product = "my product"
    };

    var s = obj.ConvertToString();

    //you can now save s to the database
    Db.Save(s);

    //later on pretend you read 's' back from the database
    s = Db.ReadAnItem();
    var objectFromDb = s.ToObjectClassSample();
}
所以,是的,您可以按照自己的意愿序列化数据,但我会使用一种通用格式:json、xml、csv等等

我不建议使用上面的代码,这只是一个示例,说明您基本上可以做任何您想将其转换为字符串的事情,只要您可以将其转换回。不过,使用json解析器会容易得多

带有ServiceStack.Text的示例如下所示

var objToSerialize = new ObjectClassSample(); //fill this with data
string myObjectAsString = objToSerialize.ToJson();

//reading it back from the database

ObjectClassSample myObj = myObjectAsString.FromJson<ObjectClassSample>();
var objToSerialize=new ObjectClassSample()//用数据填充这个
字符串myObjectAsString=objToSerialize.ToJson();
//从数据库中读回它
ObjectClassSample myObj=myObjectAsString.FromJson();
我相信newstonsoft.json与此类似


正如您所看到的……要漂亮得多。

无论如何,您必须序列化您的类。如果不是JSON,那么是XML