Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在表上引入外键约束键可能会导致循环或多个级联路径。在删除时指定。。。错误_C#_Entity Framework_Model View Controller_Asp.net Mvc 5 - Fatal编程技术网

C# 在表上引入外键约束键可能会导致循环或多个级联路径。在删除时指定。。。错误

C# 在表上引入外键约束键可能会导致循环或多个级联路径。在删除时指定。。。错误,c#,entity-framework,model-view-controller,asp.net-mvc-5,C#,Entity Framework,Model View Controller,Asp.net Mvc 5,我试图在Nugget Package Manager控制台中运行更新数据库命令,但没有成功,因为我一直收到错误 Introducing FOREIGN KEY constraint 'FK_dbo.TeamToLeaders_dbo.Teams_TeamId' on table 'TeamToLeaders' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION

我试图在Nugget Package Manager控制台中运行更新数据库命令,但没有成功,因为我一直收到错误

Introducing FOREIGN KEY constraint 'FK_dbo.TeamToLeaders_dbo.Teams_TeamId' on table 'TeamToLeaders' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints. Could not create constraint. See previous errors..
I want to set up relationship in which there is a class called Team.cs that contains the below properties
public class Team
    {
        public int TeamId { get; set; }    
        public string TeamName { get; set; }    
        public Decimal MonthlyTarget { get; set; }    
        public ICollection<SalesAgent> Agents { get; set; }   

    }
现在我想要一个类,我可以添加团队和代理之间的关系,也就是说,本质上我希望能够为每个团队分配一个团队负责人,所以我在下面设置了这个类

public class TeamToLeader
    {
        [Key]
        public int TeamToLeaderId { get; set; }

        [ForeignKey("Team")]
        public int TeamId { get; set; }              
        public int AgentId { get; set; }    
        public virtual Team Team { get; set; }    
        [ForeignKey("AgentId")]
        public virtual SalesAgent Agent { get; set; }
    }
在运行“更新数据库命令”时,我收到一个错误,即类型为“SalesForce.Models.TeamToLeader”的属性“AgentId”上的ForeignKeyAttribute无效。在依赖类型“SalesForce.Models.TeamToLeader”上未找到导航属性“SalesAgent”。名称值应为有效的导航属性名称。

所以我把模型改成了

public class TeamToLeader
{
    [Key]
    public int TeamToLeaderId { get; set; }
    [ForeignKey("Team")]
    public int TeamId { get; set; }
    [ForeignKey("SalesAgent")]
    public int AgentId { get; set; }
    public virtual Team Team { get; set; }       
    public virtual SalesAgent Agent { get; set; }
}
这就导致了这个错误

Introducing FOREIGN KEY constraint 'FK_dbo.TeamToLeaders_dbo.Teams_TeamId' on table 'TeamToLeaders' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
Could not create constraint. See previous errors.
请提供帮助。

您应该使用Diable强制EF不要使用级联删除。在DbContext中添加:

...
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
}
...
这取决于你喜欢哪种行为

您还可以使用fluent API:

...
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<TeamToLeader>().HasRequired(i => i.Agent).WithMany().WillCascadeOnDelete(false);
}
...
我不确定您是否需要
团队
与多个
销售代理
建立关系。

您应该禁用以强制EF不使用级联删除。在DbContext中添加:

...
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
}
...
这取决于你喜欢哪种行为

您还可以使用fluent API:

...
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<TeamToLeader>().HasRequired(i => i.Agent).WithMany().WillCascadeOnDelete(false);
}
...
我不确定您是否需要
团队
与多个
销售代理
建立关系。

您应该禁用以强制EF不使用级联删除。在DbContext中添加:

...
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
}
...
这取决于你喜欢哪种行为

您还可以使用fluent API:

...
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<TeamToLeader>().HasRequired(i => i.Agent).WithMany().WillCascadeOnDelete(false);
}
...
我不确定您是否需要
团队
与多个
销售代理
建立关系。

您应该禁用以强制EF不使用级联删除。在DbContext中添加:

...
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
}
...
这取决于你喜欢哪种行为

您还可以使用fluent API:

...
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<TeamToLeader>().HasRequired(i => i.Agent).WithMany().WillCascadeOnDelete(false);
}
...
我不确定您是否需要
团队
与许多
销售代理
建立关系。

As,and said

这在理论上是正确的,但SQL server(不是实体框架)不喜欢它,因为您的模型允许单个员工同时成为第一和第二团队的成员。如果团队被删除,这将导致同一
员工
实体的多个删除路径

SQL server不允许对同一实体使用多个删除路径

表示可以通过禁用
OneToManyCascadeDeleteConvention
ManyToManyCascadeDeleteConvention
来解决此问题,但这些删除操作应该由代码手动完成。

As和said

这在理论上是正确的,但SQL server(不是实体框架)不喜欢它,因为您的模型允许单个员工同时成为第一和第二团队的成员。如果团队被删除,这将导致同一
员工
实体的多个删除路径

SQL server不允许对同一实体使用多个删除路径

表示可以通过禁用
OneToManyCascadeDeleteConvention
ManyToManyCascadeDeleteConvention
来解决此问题,但这些删除操作应该由代码手动完成。

As和said

这在理论上是正确的,但SQL server(不是实体框架)不喜欢它,因为您的模型允许单个员工同时成为第一和第二团队的成员。如果团队被删除,这将导致同一
员工
实体的多个删除路径

SQL server不允许对同一实体使用多个删除路径

表示可以通过禁用
OneToManyCascadeDeleteConvention
ManyToManyCascadeDeleteConvention
来解决此问题,但这些删除操作应该由代码手动完成。

As和said

这在理论上是正确的,但SQL server(不是实体框架)不喜欢它,因为您的模型允许单个员工同时成为第一和第二团队的成员。如果团队被删除,这将导致同一
员工
实体的多个删除路径

SQL server不允许对同一实体使用多个删除路径

表示可以通过禁用
OneToManyCascadeDeleteConvention
ManyToManyCascadeDeleteConvention
来解决,但这些删除操作应该由代码手动完成