我正在使用 EF Core,并且我有一個帶有外鍵的模型:
public class Advertiser
{
public int AdvertiserId { get; set; }
public string Name { get; set; } = string.Empty;
[ForeignKey(nameof(AddressId))]
public virtual Address? Address { get; set; }
public int? AddressId { get; set; }
...
}
public void Configure(EntityTypeBuilder<Advertiser> builder)
{
...
builder.HasOne(adv => adv.Address);
}
如您所見,我有一個廣告商模型和參考地址物體的 addressId 外鍵。
所以效果很好,現在我想在資料庫中的 Advertiser 和 Address 物體中插入資料:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(CreateViewModel model)
{
var advertiserModel = new Advertiser
{
Name = model.Name,
...
};
if (advertiserModel.Address != null)
{
advertiserModel.Address.AddressLine1 = model.AddressLine1;
advertiserModel.Address.AddressLine2 = model.AddressLine2;
advertiserModel.Address.City = model.City;
advertiserModel.Address.State = model.State;
advertiserModel.Address.ZipCode = model.ZipCode;
advertiserModel.Address.PhoneNumber = model.PhoneNumber;
advertiserModel.Address.FaxNumber = model.FaxNumber;
}
await _advertisersService.CreateAdvertiserAsync(advertiserModel);
}
服務:
public async Task<Advertiser> CreateAdvertiserAsync(Advertiser advertiser)
{
await _db.Advertisers.AddAsync(advertiser);
await _db.SaveChangesAsync();
return advertiser;
}
問題是沒有填充地址表,并且廣告商表上也有空外鍵。我究竟做錯了什么?為什么沒有在關系表上保存資料?
uj5u.com熱心網友回復:
地址默認為空。
public virtual Address? Address { get; set; }
除非您設定一個地址,否則廣告商不會有地址,例如
var advertiserModel = new Advertiser
{
Name = model. Name,
Address = new Address(),
...
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/519410.html
標籤:C#实体框架实体框架核心asp.net-core-mvc
上一篇:leetcode 287. Find the Duplicate Number 尋找重復數 (中等)
下一篇:資料物體過濾器
