我刚刚开始使用Entity Framework,我担心可以轻松覆盖主键。我知道我可以在我的控制器中保护这个模型(我正在使用带有ASP.NET MVC 5的WebAPI),但我想知道是否有可能阻止任何人通过注释或其他东西从模型本身设置我的模型的ID?
基本上我可以这样做:
public int ID { get; private set; }
或类似的东西,在EF6模型中?
如果通过Google很容易找到,那么我不知道要搜索的字词。我找不到任何真正能解决这个问题的东西。
答案 0 :(得分:19)
是的,你可以,它应该工作得很好。根据Julie Lerman(微软的实体框架MVP,this blog post来说,所以我强烈建议你在EF的旅程中阅读她的博客!):
实体框架需要一个无参数构造函数 实现从查询(或加载)返回的对象。我做了 我班上的这个让步但注意到它是私人的 构造函数。所以我还在保护我的班级。没有人可以访问它。 但是当我执行查询时,EF仍然能够填充这个类。 不,我没有做一些魔术告诉EF使用我的公众 构造函数。它确实使用了私有构造函数。