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

One*_*ood 14 c# entity-framework

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

基本上我可以这样做:

public int ID { get; private set; }
Run Code Online (Sandbox Code Playgroud)

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

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

Iro*_*n84 20

是的,你可以,它应该工作得很好.根据Julie Lerman的博客文章(他是微软的实体框架MVP,所以我强烈建议你通过EF阅读她的博客!):

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

  • Julie Lerman是我对此类事情的自动追求.我真的只是搜索"Julie Lerman私人套装",甚至不知道她是否已经谈过它. (4认同)