C#DTO具有只读属性

时间:2013-11-27 10:57:29

标签: c# entity-framework asp.net-web-api dto

我有以下课程:

[DataContract()]
public partial class User
{
    [DataMember()]
    public int Id { get; set; }

    [DataMember()]
    public string Name { get; set; }

    [DataMember()]
    public string Surname { get; set; }
}

我的DTO课程在一个程序集中,而我的模型(EF)在另一个程序集中。因此,所有属性都必须是public get / set。

Id是一个标识列,由db设置并自动化。但是我不希望用户更改id。

当用户使用dto时,是否可以在属性上设置属性以将属性设置为只读?

3 个答案:

答案 0 :(得分:1)

您可以使用受保护的集合:

[DataMember()]
public int Id { get; protected set; }

并确保字段仅在构造函数中设置...

答案 1 :(得分:1)

在定义访问者时,您始终可以更具体地访问属性。使用代码中的Id。这看起来像这样:

[DataMember]
public int Id { get; private set; }

不能使属性的getter / setter比属性本身更少限制,例如。

[DataMember]
private int Id { public get; set; }

答案 2 :(得分:0)

[DataMember()]
    public int ID{ get; private set; }
相关问题