【问题标题】:Azure Mobile ServiceAzure 移动服务
【发布时间】:2015-02-02 17:57:56
【问题描述】:

我有 3 个表 (A - AB - B),它们是使用 Code-First “Azure 移动服务”创建的 使用移动服务中的模型创建的两个表(A 和 B)和第三个表(AB)由框架创建,该框架将两个表连接为 N:N 关系问题是当我创建 A 的新实例时有参考另一个表 B,“InsertAsync(item);”尝试在另一个表中插入新实例,这会导致冲突错误,因为实体已经存在,我想要的只是插入到关系表中(AB)。我目前的解决方案是使用 sql-string 手动执行 sql 命令,因为我认为这不是一个好的解决方案。有什么方法可以通知框架,如果对象存在,只需插入到关系表中。感谢大家的帮助。

【问题讨论】:

    标签: azure mobile service


    【解决方案1】:

    这是新的 Tag 类:

    public class Tag 
        { 
            public int TagId{ get; set; } 
            public string Name { get; set; } 
            public ICollection<Post> Posts { get; set; } 
        }

    这是添加到 Post 类的新属性:

    public ICollection&lt;Tag&gt; Tags { get; set; }

    你需要在 dbContext 的 OnModelCreating 中定义

    modelBuilder.Entity<Post>() 
                    .HasMany(p => p.Tags) 
                    .WithMany(t => t.Posts) 
                    .Map(mc => 
                       { 
                           mc.ToTable("PostJoinTag"); 
                           mc.MapLeftKey("PostId"); 
                           mc.MapRightKey("TagId"); 
                       });

    当你插入一个 A 并且 B 和 B 的列表存在于数据库中时,你需要添加

     newA.ListOfB.Add(YourBFromDB)

    YourBFromDB 是表中的对象。这样,您有 2 个解决方案:

    • 发送到后端右侧B

    • 在后端,您将根据应用发送的 id 获得 B

    【讨论】:

      猜你喜欢
      • 2016-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-17
      • 2017-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多