1 回答

TA貢獻1833條經驗 獲得超4個贊
問題將與您在許可證中的用戶參考有關。這是從 Owin 上下文中檢索到的,但您正在嘗試將其保存/關聯到您的許可證上下文。
我將更新該方法以簡單地接受用戶 ID,然后從您的許可證上下文加載并關聯用戶。
public async Task AddRangeAsync(IEnumerable<LicenseViewModel> models, int ownerId)
{
var list = new List<License>();
var owner = context.Users.Single(x => x.UserId == ownerId);
foreach (var model in models)
{
list.Add(new License
{
ExpiryDate = model.ExpiryDate,
Name = model.Name,
User = owner
});
}
context.Licenses.AddRange(list);
await context.SaveChangesAsync();
}
那應該可以解決您的問題。偷偷摸摸的小細節。:)
為了避免負載,您可以使用:
var owner = context.Owners.Local.SingleOrDefault(x => x.UserId == ownerId);
if (owner == null)
{
owner = new User{UserId = ownerId};
context.Users.Attach(owner);
}
// ...
我可能會考慮將其放在基類方法中以從上下文中檢索所有者引用。該方法的警告是,除非您從數據庫顯式加載,否則此上下文中的用戶將不包含有關用戶的詳細信息。(即名稱等)因此,只要團隊知道不相信上下文將具有完整的用戶,除非明確重新加載,就可以從性能 PoV 中獲得。
- 1 回答
- 0 關注
- 110 瀏覽
添加回答
舉報