我通過腳手架使用 EF 和資料庫優先方法創建了一個 API。
我的背景關系檔案中有以下內容
modelBuilder.Entity<Request>(entity =>
{
entity.ToTable("Request", "rmr");
entity.Property(e => e.CreatedOn).HasColumnType("datetime");
entity.Property(e => e.RaisedBy).HasMaxLength(256);
entity.Property(e => e.WorklistName).HasMaxLength(32);
});
modelBuilder.Entity<RequestLine>(entity =>
{
entity.HasKey(e => new { e.RequestId, e.LineNumber })
.HasName("PK_RMR_REQUESTLINE");
entity.ToTable("RequestLine", "rmr");
entity.Property(e => e.Batch).HasMaxLength(32);
entity.Property(e => e.CancelBy).HasMaxLength(256);
entity.Property(e => e.CancelDate).HasColumnType("datetime");
entity.Property(e => e.CostCentre).HasMaxLength(32);
entity.Property(e => e.Destination).HasMaxLength(32);
entity.Property(e => e.FirstDeliveryDate).HasColumnType("datetime");
entity.Property(e => e.ProcessOrder).HasMaxLength(32);
entity.Property(e => e.Sku)
.HasMaxLength(32)
.HasColumnName("SKU");
entity.Property(e => e.SubmittedDate).HasColumnType("datetime");
entity.HasOne(d => d.Request)
.WithMany(p => p.RequestLines)
.HasForeignKey(d => d.RequestId)
.HasConstraintName("FK_RMR_REQUESTLINE_REQUEST");
});
然后在我的模型中
要求:
public partial class Request
{
public Request()
{
RequestLines = new HashSet<RequestLine>();
}
public long Id { get; set; }
public string RaisedBy { get; set; } = null!;
public DateTime CreatedOn { get; set; }
public string? WorklistName { get; set; }
public virtual ICollection<RequestLine> RequestLines { get; set; }
}
請求行:
public partial class RequestLine
{
public long RequestId { get; set; }
public int LineNumber { get; set; }
public string Sku { get; set; } = null!;
public string Batch { get; set; } = null!;
public int Quantity { get; set; }
public string? CostCentre { get; set; }
public string? ProcessOrder { get; set; }
public string Destination { get; set; } = null!;
public DateTime FirstDeliveryDate { get; set; }
public DateTime? SubmittedDate { get; set; }
public DateTime? CancelDate { get; set; }
public string? CancelBy { get; set; }
}
我的請求控制器如下所示:
[HttpGet]
public async Task<ActionResult<IEnumerable<Request>>> GetRequests()
{
if (_context.Requests == null)
{
return NotFound();
}
return await _context.Requests.ToListAsync();
}
在 Swagger 中,它在示例中正確顯示,基于模型:
[
{
"id": 0,
"raisedBy": "string",
"createdOn": "2022-06-15T17:32:27.129Z",
"worklistName": "string",
"requestLines": [
{
"requestId": 0,
"lineNumber": 0,
"sku": "string",
"batch": "string",
"quantity": 0,
"costCentre": "string",
"processOrder": "string",
"destination": "string",
"firstDeliveryDate": "2022-06-15T17:32:27.129Z",
"submittedDate": "2022-06-15T17:32:27.129Z",
"cancelDate": "2022-06-15T17:32:27.129Z",
"cancelBy": "string",
"request": "string"
}
]
}
]
但是在運行 GET 時,我實際看到的是:
[
{
"id": 1,
"raisedBy": "GEORGE",
"createdOn": "2022-06-13T13:14:31.813",
"worklistName": "WORKLIST1",
"requestLines": []
},
{
"id": 10008,
"raisedBy": "FFFFFF",
"createdOn": "2022-06-15T16:34:18.297",
"worklistName": "WORKLIST1",
"requestLines": []
}
]
requestLines 串列顯示為空,但我的資料庫中存在這些資料。
為問題的長度道歉。如果需要更多資訊,請告訴我。
提前致謝!
uj5u.com熱心網友回復:
像這樣的東西
return await _context.Requests.Include(x => x.RequestLines).ToListAsync();
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/494608.html
