MVC4使用多对多关系保存数据

时间:2014-09-29 04:27:43

标签: entity-framework asp.net-mvc-4 ef-code-first many-to-many

多对多关系

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{
modelBuilder.Entity<Company>()
    .HasMany(c => c.Tags)
    .WithMany(t => t.Companies)
    .Map(m =>
    {
        m.MapLeftKey("Companyid");
        m.MapRightKey("tagid");
        m.ToTable("CompanyTags");
    }
}

添加公司

var company = new Company() { Name = "FooBar Inc" };

添加标签

int tagId = _db.Tags.Where(x => x.Title == tag).Select(x => x.Id).SingleOrDefault();
if (tagId==0)
   company.Add(new Tag { Title = tag});
else
    ?????? //still create a relationship in CompanyTags (companyid,tagid)


context.Companies.Add(company);
context.SaveChanges();

如何配置,以便在创建新公司时以及标签是否在Tag表中退出。不要创建标记,但仍然在CompanyTags表中创建关系

UPDATE 如果没有条件,如果用户例如添加标签标题狗,如果它存在,则在标签表中创建新记录。相反,我希望在映射表中的标记表中不创建标记,请参见下面的屏幕截图 enter image description here

1 个答案:

答案 0 :(得分:0)

通过实施

解决
       _db.Tags.FirstOrDefault(x => x.Title == tag) 

而不是做新的标签...