我有一个LINQ to SQL实体,我将对其进行序列化并通过Webservice调用以JSON形式返回。

该实体上有一个我不希望序列化的属性。为此,通常存在[ScriptIgnore]属性,如果我手动将其添加到designer.cs文件中,则该属性的工作方式与我想要的完全一样。

现在,由于设计器文件是自动生成的,因此我希望不必手动编辑它,因为任何更改都可以轻松覆盖。因此,我的问题是:是否有任何方法可以注释该属性,以便在序列化时直接在DBML编辑器中将其排除?

如果答案是否定的;有什么解决方案比在序列化之前将属性手动设置为null或返回除该属性以外的相同匿名类型更整洁的解决方案吗?在MVC.NET中,是否有任何方法可以将参数传递给JSON()方法以修改其行为,性能?

我很抱歉是否曾被问过-我希望这是一个常见问题,但我找不到喜欢它的人。

最佳答案

所有DBML生成的类都是局部类,因此您可以将它们扩展到另一个文件中。 DBML设计器将仅更改Designer.cs文件中的类。从DBML设计器中删除该属性,并将其放在另一个文件的局部类中。然后,您可以添加所需的任何其他属性,DBML设计器将不理会它。您将必须手动管理此属性并对其进行更新以匹配任何数据库更改,但是如果它解决了您的问题,那么我认为这可能是值得付出的代价。

10-08 14:07