使用其他表中存在的数据更新联结表

时间:2015-04-28 17:06:46

标签: c# asp.net-mvc linq junction-table

我有这两个表

public partial class Items
{
    public Items()
    {
        this.Variables = new HashSet<Variable>();
    }

    public int Id { get; set; }
    public string name {get; set};
    //other columns 

    public virtual ICollection<Variable> Variables { get; set; }
  }
}

public partial class Variable
{
    public Variable()
    {
        this.Items= new HashSet<Items>();
    }

    public int Id { get; set; }
    public string name {get; set};
    //other stuff

    public virtual ICollection<Items> Items{ get; set; }
 }
}

TR 这些都是从数据库第一个实体框架(从edmx文件中的数据库更新模型)自动创建的。我需要能够更新从

创建的联结表
public virtual ICollection<Template> Templates { get; set; }
public virtual ICollection<Variable> Variables { get; set; }

联结表只有两列TemplateId和VariableID,它们都是各个表的FK。这些需要匹配Item和Variable的名称。目前我能够完成一些(我没有从项目表中获得ID):

foreach (var tempItem in db.Items)
           {

               var item = db.Variables.FirstOrDefault(x => x.Name tempItem.Name);
                db.Variables.Add(item);

            }
            db.SaveChanges();

编辑:我想要完成的SQL是:

select Top 1000 V.ID, I.ID
FROM [PageflexWeb].[dbo].[Variables] as V, [PageflexWeb].[dbo].[Items] as I
Where V.Name = I.Name

哪个工作正常,但我需要一种方法将其保存到联结表dbo.ItemVariables

非常感谢任何帮助。

我已阅读有关msdn和stack的所有文档,但我无法找到我正在寻找的答案。

0 个答案:

没有答案