none
LINQ2ENTITIES 多对多的关系 RRS feed

  • 问题

  • LINQ,多对多关系。
    表:Articles, Tags,AAT(只有ArticleId,TagId)。
     一个文章可以有多个标签,一个标签页可以有多个文章,多对多的关系通过AAT表存储。
    AEF模型建立后AAT表不存在,只有Article Tag,以及他们之间多多关系

    问题:在添加一个Article(包含多个Tag)数据时,如何把这个Article的Tags添加进去呢?

    现在我的代码:
    var tagIds = new List<int>();
                foreach (var item in Request.Form["Minilog.TagIds"].Split(','))
                {
                    tagIds.Add(int.Parse(item.ToString()));

                }

                var tags = db.Tags.Where(t => tagIds.Contains(t.TagId));
                foreach (var item in tags)
                {
                    microlog.Tags.Add(item);
                }
                

                db.Micrologs.AddObject(microlog);
                db.SaveChanges();

                return RedirectToAction("Index");

    报错为:

    无法更新 EntitySet“TagVsMicrolog”,因为它有一个 DefiningQuery,而 <ModificationFunctionMapping> 元素中没有支持当前操作的 <InsertFunction> 元素


    如何把Article以及它的Tags添加进去呢?


    【主要问题】 这样的表关系结构下,如何添加一个带有多个Tag的Article呢?AAT关系表只有ArticleId和TagId字段,没有主键。
    • 已编辑 Dun Eysa 2011年2月22日 3:45 问题不明
    2011年2月18日 2:35

答案

全部回复

  • 你好,

    出现这种情况的原因有:

    1.出现情况为原表有主键,但是在创建表的视图时,没有设置视图表的ID为主键!
    2.原表本身就没有设置主键
    建议:打开表定义设置好主键,然后更新Entity Model;如果不行,删除已有的Entity Model,删除Web.Config中的Entity定义,重建一个,应该可以了
    谢谢!

    Jackie Sun [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年2月21日 5:00
    版主
  • 你好,

    出现这种情况的原因有:

    1.出现情况为原表有主键,但是在创建表的视图时,没有设置视图表的ID为主键!
    2.原表本身就没有设置主键
    建议:打开表定义设置好主键,然后更新Entity Model;如果不行,删除已有的Entity Model,删除Web.Config中的Entity定义,重建一个,应该可以了
    谢谢!

    Jackie Sun [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    请看【主要问题】,告诉我怎么做?我想应该是 Article 对象的 Tags 几何属性添加N个 Tag 实例,然后Add Article to db,但是不行啊
    2011年2月22日 3:47
  • 需要给中间的表加一个主键,然后再更新EF
    2011年2月22日 9:51