在下面的代码中,我有一个WCF服务,其中包含一个向电影添加标签的方法。在数据库中,有三个表:一个用于标签;一部电影;一个通过关系加入电影和标签。
由于某种原因,以下代码(特别是if..then..else语句的第一段)未在表中添加新标记。它没有抛出任何异常,它似乎似乎没有添加任何东西
public void AddFilmTag(string tagWordIn, int filmIdIn)
{
if (context.Tags.SingleOrDefault(x => x.tagWord == tagWordIn) == null)
{
Tag t = new Tag();
t.tagWord = tagWordIn;
context.Tags.AddObject(t);
context.Films.SingleOrDefault(x => x.filmId == filmIdIn).Tags.Add(t);
}
else
{
Tag t = context.Tags.SingleOrDefault(x => x.tagWord == tagWordIn);
context.Films.SingleOrDefault(x => x.filmId == filmIdIn).Tags.Add(t);
}
}
对此的任何帮助将不胜感激。
答案 0 :(得分:3)
您不会在任何时候致电context.SaveChanges()
。
没有那个调用,根本不会写任何东西。
答案 1 :(得分:1)
您需要将更改保存回数据库
e.g。
context.SaveChanges()
另外
虽然这样会起作用
if (context.Tags.SingleOrDefault(x => x.tagWord == tagWordIn) == null)
执行
在语义上更正确if (!context.Tags.Any(x => x.tagWord == tagWordIn))