我在我的MVC网站和Azure SQL后端使用EF 6 Code First。 Azure门户SQL页面包含许多可以通过单击应用的索引建议。但是,我不确定对我的EF数据模型的影响。我知道如果我直接在数据库中添加或删除表,字段等,那么EF会抱怨我的模型和数据库不同步而且事情变得糟糕。索引怎么样?如果我让Azure自动添加推荐的索引,EF甚至会知道吗?它会引起问题吗?
答案 0 :(得分:2)
索引怎么样?如果我让Azure自动添加推荐的索引,EF甚至会知道吗?它会引起问题吗?...
EF不需要知道它并且它不会导致任何问题,它的查询优化器如果它们是有用的则使用这些索引。所有索引建议应该用一点盐,并且应该仅在仔细评估后应用。< / p>
答案 1 :(得分:1)
根据我的经验,是的,索引建议可能会导致实体框架迁移出现问题。它们不会影响实体框架本身,它会愉快地连接到数据库,即使它对索引一无所知,但是在应用新迁移时可能遇到问题。
例如,您使用Azure门户将新建议的索引应用于其中一个表。稍后您将重构此表并创建一个删除列的迁移。当您尝试应用它时,此迁移可能会失败,因为索引(EF不知道)依赖于列。
这种情况可能不太可能,但在您忘记应用推荐之后,它可能会让您失望。如果您让Azure自动为您应用这些建议,则更是一个问题。最糟糕的是,在尝试部署到生产环境之前,您可能不会遇到这些问题 - 您可能在登台/测试环境中看不到它们,因为使用模式会有所不同,因此索引建议本身可能会有所不同。