0

当我尝试将 Linq-to-sql-object 设置为我的视图状态时,我会得到一个运行时异常,指出我必须使对象可序列化。

我已经用谷歌搜索了我的问题,但找不到我的问题的解决方案。是否可以使这些对象可序列化?这些对象是自动生成的,因此不可能只在类之前添加一个 [Serializable] 属性,而且我在特定的 dbml 文件中找不到任何设置。

提前致谢!

4

1 回答 1

0

为了把它放在Viewstate中,这个类必须被赋予[Serializable]。即使您可以简单地将该属性放在从数据库中获取的类上,我也建议您不要这样做。

您需要做的并且无论如何都应该做的是定义代表您想要放入 Viewstate 中的数据的类。然后用数据库中的数据填充它们,并根据需要在 Viewstate 中使用它们。这不仅解决了您的问题,而且将您的视图对象与数据库对象分开,以便您可以根据需要更改 Viewstate 对象,或者只要它仍然可以填充您的 Viewstate 对象,就可以更改从数据库获取数据的方式。

请参阅此处的关注点分离: http ://en.wikipedia.org/wiki/Separation_of_concerns

编辑:
看起来生成的类是一个部分类,所以我只是测试了创建另一个具有相同名称的部分类并将其标记为可序列化。我能够序列化该类,它包含来自两个部分类的属性。经过更多的测试,我开始遇到问题,所以虽然有可能,但它绝对与维护自己的可序列化类一样可靠。

于 2012-07-20T18:57:27.870 回答