保护实体框架使用的POCO上的PK属性

时间:2014-05-03 19:24:14

标签: c# entity-framework poco

如何保护EF使用的POCO对象上的主键属性?

如果我有像这样的POCO:

public class Customer
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    ....
}

如何阻止某人更改Id的价值?

3 个答案:

答案 0 :(得分:1)

EF使用反射来设置属性值。因此,即使是私人制定者也会工作:

public Id { get; private set; }

答案 1 :(得分:0)

您可以将setter标记为internal,这样只有包含的程序集类才能修改它。

public class Customer
{
   public int Id { get; internal set; }
   public string FirstName { get; set; }
   ....
}

答案 2 :(得分:0)

我不确定您使用EntityFramework的目的是什么,但请记住,如果该字段是针对Web应用程序或服务进行序列化的,则用户仍然可以修改该字段。因此,当您将任何对象保存到数据库时,应始终验证用户是否有权编辑该对象。