如何告诉EF Code First只删除用DbSet定义的表,而不是同一数据库中的其他表(Memberhisp表)

本文关键字:数据库 Memberhisp 其他 First Code EF 删除 定义 DbSet 何告诉 | 更新日期: 2023-09-27 18:18:54

我使用EF代码首先与DontDropDbJustCreateTablesIfModelChanged

我使用这个是因为我要部署到apphbor,这样只有表被删除/重新创建,而不是数据库。

在同一个数据库中,我使用aspnet_regsql工具为Membership和Role provider生成表。

我如何使EF Code首先从我的项目中删除/重新创建表,而不是会员/角色提供者的表?

这是我得到的错误:

Cannot use DROP TABLE with 'vw_aspnet_Applications' because 'vw_aspnet_Applications' is a view. Use DROP VIEW.
Cannot use DROP TABLE with 'vw_aspnet_Users' because 'vw_aspnet_Users' is a view. Use DROP VIEW.
Cannot use DROP TABLE with 'vw_aspnet_MembershipUsers' because 'vw_aspnet_MembershipUsers' is a view. Use DROP VIEW.
Cannot use DROP TABLE with 'vw_aspnet_Roles' because 'vw_aspnet_Roles' is a view. Use DROP VIEW.
Cannot use DROP TABLE with 'vw_aspnet_UsersInRoles' because 'vw_aspnet_UsersInRoles' is a view. Use DROP VIEW.
drop table [vw_aspnet_Applications]
drop table [vw_aspnet_Users]
drop table [vw_aspnet_MembershipUsers]
drop table [vw_aspnet_Roles]
drop table [vw_aspnet_UsersInRoles]]

如何告诉EF Code First只删除用DbSet定义的表,而不是同一数据库中的其他表(Memberhisp表)

用您自己的自定义逻辑实现您自己的IDatabaseInitializer来排除这些表(或者只是不包含它们)请看下面的例子:https://gist.github.com/895730