我想将名为email_pk(varchar 50)的另一列作为主键添加到由WebMatrix Starter Site模板创建的StarterSite数据库的UserProfile表中,并将id引用为引用Email列的外键约束(varchar 50)一个新的tb_contacts表。后一栏不是主键。
当我尝试在WebMatrix数据库工作区中手动执行此操作时,出现以下错误:
参考表中没有主键或候选键' dbo.UserProfile'与外键中的引用列列表匹配' FK_tb_admin_user_UserProfile'。 无法创建约束。查看以前的错误。
System.Data.SqlClient.SqlException(0x80131904):引用的表中没有主键或候选键' dbo.UserProfile'与外键中的引用列列表匹配' FK_tb_admin_user_UserProfile'。 无法创建约束。查看以前的错误。 在Microsoft.WebMatrix.DatabaseManager.SqlDatabase.SqlDatabaseProvider.EditTable(String connectionString,String schema,TableInfo tableInfo) 在Microsoft.WebMatrix.DatabaseManager.IisDbManagerModuleService.EditTable(DatabaseConnection databaseConnection,String schema,Object tableInfoData,String configPathState) 在Microsoft.WebMatrix.DatabaseManager.Client.ClientConnection.EditTable(String schema,Object tableInfoData) 在Microsoft.WebMatrix.DatabaseManager.Client.ClientTable.CommitChanges() 在Microsoft.WebMatrix.DatabaseManager.Client.TableDesignerViewModel.PerformSave() ClientConnectionId:1da00f40-8f46-4c5b-b423-905c6990fd0d
答案 0 :(得分:0)
如果要向UserProfile表添加外键,则引用的列必须是主键或具有唯一约束。
您可以使用如下查询手动添加唯一约束:
ALTER TABLE tb_contacts
ADD UNIQUE (Email)
顺便说一下,WebMatrix数据库工作空间的“新建关系”对话框仅显示具有合适主键的表。
请注意,您的StarterSite数据库更改会禁止使用WebSecurity类。