相关疑难解决方法(0)

实体框架代码首先 - 定义关系/密钥

我首先使用代码设计我的数据库,我想我需要一些帮助.

我收到此错误:

在表'Invoices'上引入FOREIGN KEY约束'SalesOrder_Invoices'可能会导致循环或多个级联路径.指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束.
无法创建约束.查看以前的错误.

我想尝试以下关系/键:

--> = 1 to Many Relationship
Run Code Online (Sandbox Code Playgroud)
  1. 客户 - >客户位置
  2. CustomerLocation - > SalesOrder
  3. SalesOrder - >发票
  4. SalesRep - > SalesOrder
  5. PaymentTerm - >客户
  6. PaymentTerm - > SalesOrder
  7. PaymentTerm - >发票

我试图通过以下标准来定义它们:

<ClassName><PrimaryKeyID>
Run Code Online (Sandbox Code Playgroud)

示例:Customer具有ID属性,因此在CustomerLocation我定义外键时如下:

Public Property CustomerID AS Integer
Run Code Online (Sandbox Code Playgroud)

我所要做的就是定义外键是否正确?我是否还必须为我定义的每个键设置导航属性?

并且,我可以在对象的同一主键上没有多个外键吗?

更新

所以要定义一个关系,你使用ClassName.PrimaryKeyProperty?或者你使用导航属性?或两者?困惑!!

更新2

因此,为了使关系发挥作用,你必须定义双方......我想.

Public Class Customer
    Public Property ID AS Integer
    Public Overrideable Property Locations AS ICollection(OF CustomerLocation) …
Run Code Online (Sandbox Code Playgroud)

entity-framework entity-framework-4.1

38
推荐指数
1
解决办法
4万
查看次数

实体框架:如何解决"FOREIGN KEY约束可能导致循环或多个级联路径"?

关于这个问题有很多问题,但我无法解决我的问题.有人可以看看这个:

我有一个OfficeDoctorSecretary表有一对多的关系.两个最后的表都是从Employee表中派生的,该Users表与创建的预定义表具有共享主键关系sqlmembershipprovider.Users桌子和Roles桌子之间似乎有很多关系,我没有参与其中.

我的问题是在我的Employee表和那个Users表之间创建一个(零,一) - (一)关系,然后我以它们之间的共享主键关系和引发的错误结束.(这个问题有更好的解决方案吗?)

这是错误:

在表'aspnet_UsersInRoles'上引入FOREIGN KEY约束'FK_dbo.aspnet_UsersInRoles_dbo.aspnet_Users_UserId'可能会导致循环或多个级联路径.指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束.无法创建约束.查看以前的错误.

这是反向工程后的代码和会员代码:

public class Office
{
    public Office()
    {
        this.Doctors = new HashSet<Doctor>();
        this.Secretaries = new HashSet<Secretary>();
    }

    [Key]
    public System.Guid OfficeId { get; set; }
    public virtual ICollection<Doctor> Doctors { get; set; }
    public virtual ICollection<Secretary> Secretaries { get; set; }
}

public class Employee …
Run Code Online (Sandbox Code Playgroud)

asp.net entity-framework sqlmembershipprovider

35
推荐指数
3
解决办法
8万
查看次数

在ASP.NET MVC 4 C#Code First中指定ON DELETE NO ACTION

如何在模型设计中指定ON DELETE NO ACTION外键约束?

目前,我有:

public class Status
{
    [Required]
    public int StatusId { get; set; }

    [Required]
    [DisplayName("Status")]
    public string Name { get; set; }
}

public class Restuarant
{
    public int RestaurantId { get; set; }
    [Required]
    public string Name { get; set; }
    [Required]
    [EmailAddress]
    public string Email { get; set; }
    [Required]
    public string Telephone { get; set; }
    [Required]
    public int StatusId { get; set; }
    public List<Menu> Menus { get; set; }

    // NAVIGATION …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc entity-framework foreign-keys code-first

27
推荐指数
2
解决办法
4万
查看次数

全局禁用EF Core 2上的级联删除

我需要了解在EF Core 2全局范围内禁用级联删除的方法.任何帮助都是适当的.

在EF 6.x中,我们使用以下代码来禁用对两者OneToManyManyToMany现实的级联删除:

builder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
builder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();
Run Code Online (Sandbox Code Playgroud)

entity-framework entity-framework-core

21
推荐指数
1
解决办法
8274
查看次数

EF6 Code First - 可能导致循环或多个级联路径

我正在使用EF6 Code First.我有两节课:

public class Player
{
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    [Key]
    public int Id { get; set; }

    [Required, MinLength(2, ErrorMessage = "Player name must be at least 2 characters length")]
    public string Name { get; set; }

    [Required]
    public int TeamClubId { get; set; }

    [Required]
    public int TeamNationalId { get; set; }

    [Required, ForeignKey("TeamClubId")]
    public virtual Team Club { get; set; }

    [Required, ForeignKey("TeamNationalId")]
    public virtual Team National { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

和:

 public class Team
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public …
Run Code Online (Sandbox Code Playgroud)

entity-framework relationship ef-code-first ef-migrations

7
推荐指数
1
解决办法
1万
查看次数

实体框架代码首先:循环或多个级联路径

我有一个Booking类,它有一个预订联系人(a Person)和一组导航属性(People),它们通过连接表链接到另一组导航属性(Bookings)Person.如何Booking为预订联系人关系启用级联删除生成表格?当我将它从流畅的API代码中删除时(启用了级联删除的默认设置),我从迁移中收到以下错误消息:

在'BookingPeople'表上引入FOREIGN KEY约束'FK_dbo.BookingPeople_dbo.People_PersonID'可能会导致循环或多个级联路径.指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束.

无法创建约束或索引.查看以前的错误.

 modelBuilder.Entity<Person>()
   .HasMany<Booking>(s => s.aBookings)
   .WithRequired(s => s.Contact)
   .HasForeignKey(s => s.ContactId); 


 modelBuilder.Entity<Booking>()
   .HasMany(t => t.People)
   .WithMany(t => t.Bookings)
   .Map(m => {
     m.ToTable("BookingPeople");
     m.MapLeftKey("BookingID");
     m.MapRightKey("PersonID");
   });
Run Code Online (Sandbox Code Playgroud)

c# sql-server entity-framework ef-fluent-api

4
推荐指数
1
解决办法
7083
查看次数