身份和其他应用数据应该使用相同的上下文

时间:2017-08-16 21:04:50

标签: asp.net-mvc entity-framework asp.net-identity

我的数据库中的用户将与许多其他实体相关。这样做的推荐做法是为应用程序提供1 db上下文吗?或者,应该有两个不同的。似乎我可以通过使用GetOwinContext()

来检索上下文

1 个答案:

答案 0 :(得分:0)

这样做的标准做法是将您的webapp的所有表保存在1个数据库中(1个上下文)。这样做的一大优点是您可以根据存储在Identity表中的数据执行SQL连接。

这是一个用例:我有一个fileupload实体和表,我需要将其与特定用户(上传文件的用户)联系起来。如果所有内容都存在于一个数据库中,那么我可以像往常一样使用外键和实体框架导航属性。如果我为Identity提供的表使用单独的数据库/上下文,那么我需要查询两个不同的数据库(性能成本更高)来获取我需要的数据。一个查询到DB1以获取我的用户ID和另一个查询到DB2以获取属于该用户的文件上载ID

简而言之,如果您的用户与许多其他实体(您提到过)相关,那么我强烈建议您使用1个数据库和上下文。