Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.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
C# 我的c对象使用哪种序列化将它们保存在SQL数据库中_C#_Sql_Xml_Serialization_Datacontractserializer - Fatal编程技术网

C# 我的c对象使用哪种序列化将它们保存在SQL数据库中

C# 我的c对象使用哪种序列化将它们保存在SQL数据库中,c#,sql,xml,serialization,datacontractserializer,C#,Sql,Xml,Serialization,Datacontractserializer,我在寻求一些建议,可能没有硬性的答案,但任何想法都是值得赞赏的。该应用程序非常典型。这是一个c代码,目前正在使用VS2010。此代码用于将模型中的数据提供给最终用户。该模型本身是基于固定点的一些已知数据、立方体的各种参数和设置。在标准编程实践中,用户通过公共get函数访问数据,而公共get函数又依赖于私有成员变量,如已知数据和设置。到目前为止,标准。现在,我想将向用户提供这些数据的类保存到sql数据库中——主要是为了让所有用户都可以共享相同的数据,或者更精确地说,共享模型生成的数据 当然,我可以

我在寻求一些建议,可能没有硬性的答案,但任何想法都是值得赞赏的。该应用程序非常典型。这是一个c代码,目前正在使用VS2010。此代码用于将模型中的数据提供给最终用户。该模型本身是基于固定点的一些已知数据、立方体的各种参数和设置。在标准编程实践中,用户通过公共get函数访问数据,而公共get函数又依赖于私有成员变量,如已知数据和设置。到目前为止,标准。现在,我想将向用户提供这些数据的类保存到sql数据库中——主要是为了让所有用户都可以共享相同的数据,或者更精确地说,共享模型生成的数据

当然,我可以只获取类的每个成员变量,并使用sql数据库将它们写入db,然后从这些变量重新实例化类。但是我不想错过.net&c提供的所有好东西。所以我想做的是序列化对象,并使用LINQtoSQL将其喷射到数据库中。linq到sql部分很简单,但我对序列化完全是新手,对此我有点担心/困惑。显然,将对象格式化为xml并将其作为sql数据类型为xml的表中的一列写入数据库。但这给我留下了几个问题


据我所知,标准XMLserializer只将类的公共成员写入xml。这对我来说似乎不是一个开始,因为我的课程设计是建立在将大部分课程私有化的基础上的,所有的公共成员都参加写作课程,这超出了我的经验范围——谁会这么做呢?。这使我考虑了DATACONTROTSCORLALTIZER,您可以在其中选择序列化变量。然而,这似乎有一些WCF依赖性,我想知道使用它的潜在缺点是什么。此外还有SoapFormatter,它似乎更适用于web应用程序和JSON。我不是真的在考虑这些,但也许我应该?也许有更好的方法来解决这个问题?也许有点冗长,但希望所有的上下文都能帮助人们向我提出一些建议

我有与您类似的要求,并在这方面做了大量研究。我使用XMLSerialization、JSON、BinraryFormatter做了许多概念验证项目,但不要忘记一些本土的黑客。我几乎决定使用JSON.NET,直到我发现!它速度快,体积小,独立于版本,支持继承,易于实现,无需对代码进行太多更改。强烈推荐。

如果将对象存储为XML,则很难从数据库中使用它。例如,如果您将客户对象存储为XML,您将如何编写以下内容

select * from Customers where LastName = 'Obama'
这是可以做到的,但并不容易

如何将对象映射到数据库是一个有争议的话题。易于入门的框架在应用程序的后期可能变得过于复杂。因为大多数应用程序在维护上花费的时间比在初始开发上花费的时间要多,所以我会使用最简单的模型


纯ADO.NET或是很好的竞争者。您将编写更多的样板代码,但是复杂性的降低远远弥补了这一点。

您是否考虑过创建一个映射类,该类接受您的模型之一&明确存在以将其映射到DB或从DB映射到DB?是的,我以前做过类似的事情,为每个成员单独写入数据库,这增加了一些令人讨厌的延迟。但是我想你实际上可以像你建议的那样使用映射器作为一个定制的序列化程序,只需将所有内容集中到一个blob中并将其转储到db中。我基本上是懒惰的,希望使用内置功能。看看Dapper,它是一种轻量级的ORM,往往比LinqToSQL或其他大多数ORM都快。感谢您一定会尝试一下。在我的应用程序中,查询linq/SQL是我不关心的事情。我还有其他参数,可以用来标识我的序列化对象。忘了提那件事了。