4

我正在尝试使用 EF5 Code First 生成数据库。这是我的SmartCodeRights表域类:

public class SmartCodeRight
{
    [Key, Column(Order = 1)]
    public long UserId { get; set; }
    public virtual User User { get; set; }

    [Key, Column(Order = 2)]
    public long CodeId { get; set; }
    public virtual SmartCode Code { get; set; }

    public CodeRight CodeRight { get; set; }
}

User这个表只是为了促进和之间的多对多关系SmartCode

这是我的Code表的域类的一部分:

public class Code
{
    // ...
    [ForeignKey("User")]
    public long? UserId{get; set;}
    public Virtual User User{get; set;}
    // ...
} 

CodeRight是一个enum

应用这两个约束:

ALTER TABLE [dbo].[SmartCodeRights] 
ADD CONSTRAINT [FK_dbo.SmartCodeRights_dbo.Users_UserId] 
FOREIGN KEY ([UserId]) 
REFERENCES [dbo].[Users] ([UserId]) 
ON DELETE CASCADE

ALTER TABLE [dbo].[SmartCodeRights] 
ADD CONSTRAINT [FK_dbo.SmartCodeRights_dbo.SmartCodes_CodeId] 
FOREIGN KEY ([CodeId]) 
REFERENCES [dbo].[SmartCodes] ([CodeId]) 
ON DELETE CASCADE

导致以下错误:

System.Data.SqlClient.SqlException (0x80131904):FK_dbo.SmartCodeRights_dbo.SmartCodes_CodeId对表 引入 FOREIGN KEY 约束SmartCodeRights可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。无法创建约束。请参阅以前的错误。

我做错了什么,实现这一目标的正确方法是什么?优先使用CodeFirst Data Annotations.

4

0 回答 0