实体框架不会添加对象

时间:2011-11-17 22:18:52

标签: c# wcf entity-framework-4

在下面的代码中,我有一个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);
        }
    }

对此的任何帮助将不胜感激。

2 个答案:

答案 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))