Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET在添加到多行时复制条目_C#_Asp.net Web Api - Fatal编程技术网

C# ASP.NET在添加到多行时复制条目

C# ASP.NET在添加到多行时复制条目,c#,asp.net-web-api,C#,Asp.net Web Api,我正在尝试将同一条目添加到多行。 我的项目包含表存储和表标记。这是一种多对多的关系;每个商店可以包含多个标签,每个标签可以与多个商店相关。 Store.cs: public class Store{ public int Id { get; set; } public virtual ICollection<Tag> Tags { get; set; } } 标签单独发布,然后与PUT请求中的存储相关 StoreController.cs: public class T

我正在尝试将同一条目添加到多行。
我的项目包含表存储和表标记。这是一种多对多的关系;每个商店可以包含多个标签,每个标签可以与多个商店相关。

Store.cs:

public class Store{
   public int Id { get; set; }
   public virtual ICollection<Tag> Tags { get; set; }
}
标签单独发布,然后与PUT请求中的存储相关

StoreController.cs

public class Tag{
       public int Id { get; set; }
       public string Name { get; set; }
    }
public async Task<IHttpActionResult> PutStore(int id, StoreViewModel model){
         var store = await db.Stores.FindAsync(id);
          if (model.tags != null)
                {
                    foreach (var modelTag in model.tags)
                    {
                        var databaseTag = db.Tags.FirstOrDefault(c => c.Name == modelTag.Name);
                        if (databaseTag == null)
                            store.Tags.Add(new Tag()
                            {
                                Name = modelTag.Name
                            });
                        else
                            if (!store.Tags.Any(sc => sc.Name == modelTag.Name))
                                store.Tags.Add(databaseTag);
                    }

                    foreach (var storeTag in store.Tags.ToList())
                        if (!model.tags.Any(s => s.Name == storeTag.Name))
                            store.Tags.Remove(storeTag);
                }
}
公共异步任务PutStore(int-id,StoreViewModel-model){
var store=await db.Stores.FindAsync(id);
如果(model.tags!=null)
{
foreach(model.tags中的var modelTag)
{
var-databaseTag=db.Tags.FirstOrDefault(c=>c.Name==modelTag.Name);
if(databaseTag==null)
store.Tags.Add(新标签()
{
Name=modelTag.Name
});
其他的
如果(!store.Tags.Any(sc=>sc.Name==modelTag.Name))
store.Tags.Add(databaseTag);
}
foreach(store.Tags.ToList()中的var storeTag)
如果(!model.tags.Any(s=>s.Name==storeTag.Name))
store.Tags.Remove(storeTag);
}
}
StoreViewModel包含一组标记。
那么,为什么标签被复制而不是链接到不同的商店?

提前感谢。

在第二次致电PutStore之前,您是否确实更新了数据库?当同时从不同线程调用PutStore时,还有一个争用条件。是的,我调用
db.Entry(store.State=EntityState.Modified;等待db.saveChangesSync()