Web API 2 - 使用接口限制数据模型
Web API 2 - Restrict Data Model using an Interface
我有一个从 Linq To SQL class
创建的模型。该模型如下所示:
public class Person
{
public int id;
public string userName;
public string firstName;
}
我想使用数据注释,所以我实现了一个名为 IPerson
的接口
interface IPerson
{
[Required]
public int id;
[Required]
public string userName;
[Required]
public string firstName;
}
然后将我的模型更改为:
[MetadataType(typeof(IPerson))]
public class Person: IPerson
{
public int id;
public string userName;
public string firstName;
}
这很好用,但是,我有以下问题:
- 我想排除某些数据成员(即 firstName)在控制器操作中重新序列化。为此,我想使用
DataContract
,但是,我不能在界面 IPerson
中使用它,因为它仅适用于 类 或枚举。我不想直接在 Person
模型中实现 Data Contract
,因为我可能会向我的 SQL 数据库添加新列(这将生成新模型 类)我想保持数据访问层与我的业务逻辑松散耦合。
如何以最简洁的方式在我发送给客户的 JSON 响应中排除数据成员被序列化?
我修好了,我用过:
using Newtonsoft.Json;
然后在我不想在接口 IPerson 中序列化的数据成员上使用 [JsonIgnore]
。
我有一个从 Linq To SQL class
创建的模型。该模型如下所示:
public class Person
{
public int id;
public string userName;
public string firstName;
}
我想使用数据注释,所以我实现了一个名为 IPerson
interface IPerson
{
[Required]
public int id;
[Required]
public string userName;
[Required]
public string firstName;
}
然后将我的模型更改为:
[MetadataType(typeof(IPerson))]
public class Person: IPerson
{
public int id;
public string userName;
public string firstName;
}
这很好用,但是,我有以下问题:
- 我想排除某些数据成员(即 firstName)在控制器操作中重新序列化。为此,我想使用
DataContract
,但是,我不能在界面IPerson
中使用它,因为它仅适用于 类 或枚举。我不想直接在Person
模型中实现Data Contract
,因为我可能会向我的 SQL 数据库添加新列(这将生成新模型 类)我想保持数据访问层与我的业务逻辑松散耦合。
如何以最简洁的方式在我发送给客户的 JSON 响应中排除数据成员被序列化?
我修好了,我用过:
using Newtonsoft.Json;
然后在我不想在接口 IPerson 中序列化的数据成员上使用 [JsonIgnore]
。