【发布时间】:2015-03-01 21:03:24
【问题描述】:
我正在使用 Web API 2、Entity Framework 6 和 Identity 2
我的产品模型与 ApplicationUser 模型相关,我在其中创建 Product,但出现错误:
附加信息:一个实体对象不能被多个 IEntityChangeTracker 实例引用。
我的模特:
public class Product {
public int id { get; set; }
public string url { get; set; }
public string name {get;set}
public ApplicationUser user { get; set; }
}
我的创建代码:
public IHttpActionResult PostProduct(Product product) {
ApplicationUserManager userManager = new ApplicationUserManager(new UserStore<ApplicationUser>(new ApplicationDbContext()));
product.user = userManager.FindById(User.Identity.GetUserId());
if (!ModelState.IsValid) {
return BadRequest(ModelState);
}
db.Products.Add(product);
db.SaveChanges();
return CreatedAtRoute("DefaultApi", new { id = product.id }, product);
}
【问题讨论】:
-
“db”指的是什么 dbcontext?看起来您有一个上下文带回(并跟踪)用户并将该用户作为属性添加到不同上下文中的对象(也将要跟踪它)
-
我对两个模型使用一个上下文,我的上下文是 ApplicationDbContext。并且 userManager.FindById(User.Identity.GetUserId()) 不为空
-
product是否有原始用户 ID 属性?如果是这样,请使用它来建立关联。
标签: entity-framework asp.net-web-api2 asp.net-identity-2