【发布时间】:2019-09-25 14:04:54
【问题描述】:
这些是我的模型,我正在使用具有代码优先方法的实体框架。
public class Respondent
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int RespondentId { get; set; }
public User Requester { get; set; }
public User Provider { get; set; }
public string Role { get; set; }
}
public class User: IUser
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public int UPI { get; set; }
public string Name { get; set; }
}
这是两个生成表的关系。
我想要的是如果用户存在于用户表中,那么不要创建另一个用户条目。
问题是当我添加一个新的提供者(用户类型)时,每次它都会在用户中创建一个新条目,即使用户存在;我想要的是在受访者表中添加该用户的引用。
private Context db = new Context();
public async Task<IHttpActionResult> PostRespondent(Respondent respondent)
{
var TempProvidersList = respondent.Providers.ToList();
try
{
var requester = db.Users.Single(s => s.UserId == respondent.Requester.UserId);
requester.IsPublic = false;
var providerIds = respondent.Providers.Select(x => x.UPI).ToList();
foreach (var providerId in providerIds)
{
if (!db.Respondents.Any(x => x.Requester.UserId == requester.UserId && x.Provider.UPI == providerId))
{
var provider = respondent.Providers.Single(x => x.UPI == providerId);
provider.IsPublic = true;
db.Respondents.Add(new Respondent() { Requester = requester, Provider = provider, Role = provider.Role });
}
}
db.SaveChanges();
}
catch (Exception ex)
{
}
return CreatedAtRoute("DefaultApi", new { id = respondent.RespondentId }, respondent);
}
【问题讨论】:
标签: c# asp.net entity-framework asp.net-web-api