[英]Why does Entity Framework Core generate HashSet?
如果我的實體與另一個實體沒有關系,為什么 Entity Framework Core 會生成一個HashSet
?
我收到以下錯誤
檢測到不支持的可能 object 循環。 這可能是由於循環或 object 深度大於最大允許深度 32
對於我的 model 循環,我在導航屬性中得到 null 。
我由 EF Core 創建的實體:
public partial class Customers
{
public Customers()
{
Orders = new HashSet<Orders>();
}
public int CustomerId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Phone { get; set; }
public string Email { get; set; }
public string Street { get; set; }
public string City { get; set; }
public string State { get; set; }
public string ZipCode { get; set; }
public virtual ICollection<Orders> Orders { get; set; }
}
Orders
實體:
public partial class Orders
{
public Orders()
{
OrderItems = new HashSet<OrderItems>();
}
public int OrderId { get; set; }
public int? CustomerId { get; set; }
public byte OrderStatus { get; set; }
public DateTime OrderDate { get; set; }
public DateTime RequiredDate { get; set; }
public DateTime? ShippedDate { get; set; }
public int StoreId { get; set; }
public int StaffId { get; set; }
public virtual Customers Customer { get; set; }
public virtual Staffs Staff { get; set; }
public virtual Stores Store { get; set; }
public virtual ICollection<OrderItems> OrderItems { get; set; }
}
我的數據庫架構:
CREATE TABLE [sales].[customers]
(
[customer_id] [int] IDENTITY(1,1) NOT NULL,
[first_name] [varchar](255) NOT NULL,
[last_name] [varchar](255) NOT NULL,
[phone] [varchar](25) NULL,
[email] [varchar](255) NOT NULL,
[street] [varchar](255) NULL,
[city] [varchar](50) NULL,
[state] [varchar](25) NULL,
[zip_code] [varchar](5) NULL,
PRIMARY KEY CLUSTERED ([customer_id] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TABLE [sales].[orders]
(
[order_id] [int] IDENTITY(1,1) NOT NULL,
[customer_id] [int] NULL,
[order_status] [tinyint] NOT NULL,
[order_date] [date] NOT NULL,
[required_date] [date] NOT NULL,
[shipped_date] [date] NULL,
[store_id] [int] NOT NULL,
[staff_id] [int] NOT NULL,
PRIMARY KEY CLUSTERED ([order_id] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [sales].[orders] WITH CHECK
ADD FOREIGN KEY([customer_id])
REFERENCES [sales].[customers] ([customer_id])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
ALTER TABLE [sales].[orders] WITH CHECK
ADD FOREIGN KEY([staff_id])
REFERENCES [sales].[staffs] ([staff_id])
GO
ALTER TABLE [sales].[orders] WITH CHECK
ADD FOREIGN KEY([store_id])
REFERENCES [sales].[stores] ([store_id])
ON UPDATE CASCADE
ON DELETE CASCADE
GO
該錯誤是由於循環引用的問題,這是我使用 Asp Net Core 5 的項目的解決方案,忽略循環引用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.