如何保护EF使用的POCO对象上的主键属性?
如果我有像这样的POCO:
public class Customer
{
public int Id { get; set; }
public string FirstName { get; set; }
....
}
如何阻止某人更改Id
的价值?
答案 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应用程序或服务进行序列化的,则用户仍然可以修改该字段。因此,当您将任何对象保存到数据库时,应始终验证用户是否有权编辑该对象。