试图抓住这里的大局。这是一个使用Identity + EF进行用户管理的Web Forms项目。默认项目包含IdentityModels
文件,建议我将自定义属性添加到ApplicationUser
类,然后使用迁移来更新我的数据库。我这样做了,数据库已生成/更新。到目前为止一切都很好。
现在我在项目中添加一个新的EDMX并将所有数据库表导入其中。这显然也将Identity表引入到图中,这很好,因为我将添加我的业务域表并通过模型将它们链接到Identity表,然后使用迁移来更新我的数据库。以下是我面临的问题和问题:
AspnetUsers
表; EDMX生成的默认ApplicationUser
类或AspNetUser
类?我的意思是迁移会使用哪些类来更新我的表格结构?ApplicationUser
和Add-Migration
命令时,向我的Update-database
类添加新属性似乎没有任何效果。它会生成空的Up()
和Down()
函数。我知道这些不仅仅是一个问题,但它们是紧密相关的,任何想要开始的人都很可能会面对所有这些问题,因此我将它们聚集在一个地方供未来的读者使用。
答案 0 :(得分:1)
根据我的理解,使用EF Code-First和Model-First可以增加保持同步的负担。您可能想要检查以下仅使用DbFirst方法的示例项目:
答案 1 :(得分:1)
行。在与该项目合作几天后,我发现了一些可能对未来读者有所帮助的事情:
正如@Konstantin所说,作为一般规则,您不应在同一项目中同时使用代码优先和模型优先方法。就个人而言,我更喜欢数据库优先于两者,即创建数据库设计,然后将其导入我的EDMX模型。然后,我可以稍后更改我的数据库设计,并使用"从数据库更新模型..."命令刷新我的模型。
AFAIK,迁移目前无法与EDMX模型一起使用。这些只适用于代码优先方法。
当您的网站首次运行时,ASP.NET Identity将自动在您的数据库中创建所有必需的表。您只需要更正web.config文件中的连接字符串。
您通常应该避免将标识表引入EDMX,但如果您确实需要这样做,请不要通过EDMX对这些实体进行更改。只需在ApplicationUser
文件中使用IdentityModels
类即可向您的用户类添加自定义属性。