【发布时间】:2018-11-24 09:35:42
【问题描述】:
我的EntityFrameworkCore 2.0 解决方案中有一个模型。类布局如下;
public class Trader : AuditableEntity
{
public string Name { get; set; }
public string Telephone { get; set; }
public string Email { get; set; }
/*REMOVED FOR BREVITY*/
public ApplicationUser AccountManager { get; set; }
}
ApplicationUser 在哪里实现IdentityUser;
public class ApplicationUser : IdentityUser<int>, IEntity
现在我希望能够定期更新AccountManager,因为交易员会定期通过。
为此,我有以下服务方法(为简洁起见);
var trader = context.Find<Trader>(traderId);
var user = await userContext.FindByIdAsync(userId.ToString());
trader.User = user;
context.Save(trader, userName);
如果我尝试这样做,我会得到错误;
System.Data.SqlClient.SqlException:当 IDENTITY_INSERT 设置为 OFF 时,无法在表“AspNetUsers”中插入标识列的显式值。
这意味着它正在尝试将新用户插入用户表。现在上面的用户已经存在。据我所知,如果将有效的 Id 传递给实体,实体框架只会创建关系?如果发送过来的复杂对象有一个空值的子实体会插入一个新的?
我可以添加一个额外的字段;
public int UserId { get; set; }
并将其设置为类中 ApplicationUser 的 FK,但我希望将类保持最小?这是可能的还是这是设置它的唯一方法? (或者我可以使用流利的配置进行设置吗?
【问题讨论】:
标签: c# asp.net-identity entity-framework-core