私有制定者可以在实体模型中使用吗?

我刚刚开始使用Entity Framework,我担心主键可以被轻松覆盖。 我知道我可以在我的控制器中保护这个模型(我正在使用带有ASP.NET MVC 5的WebAPI),但我想知道是否有可能阻止任何人通过注释或其他东西从模型本身设置我的模型的ID?

基本上我可以这样做:

public int ID { get; private set; } 

或类似的东西,在EF6模型?

如果这很容易通过谷歌找到,那么我不知道要搜索的条款。 我找不到任何真正能解决这个问题的东西。

是的,你可以,它应该工作得很好。 根据Julie Lerman的博客文章 (他是微软的entity frameworkMVP,所以我强烈建议你在EF的旅途中阅读她的博客!):

entity framework需要一个无参数构造函数,以实现从查询(或加载)返回的对象。 我在class上做了这个让步,但注意到它是一个私人构造函数。 所以我还在保护我的class级。 没有人可以访问它。 但是当我执行查询时,EF仍然能够填充这个类。 不,我没有做一些魔术告诉EF使用我的公共构造函数。 它确实使用私有构造函数。