在ASP.NET中的两个对象之间添加多对多关系

时间:2018-08-27 10:05:23

标签: asp.net database entity-framework ef-code-first

我正在使用这两种模型进行应用

public class Operator
{
    //attributes
    public virtual ICollection<Merchant> Merchants { get; set; }

}

public class Merchant
{
    //attributes
    public virtual ICollection<Operator> Operators { get; set; }
}

使用此DbContext派生类对第一种方法进行编码。

 public class ContextClass : DbContext
 {
     public ContextClass() : base("name=DefaultConnection")
     {

     }
     public virtual DbSet<Operator> Operators { get; set; }
     public virtual DbSet<Merchant> Merchants { get; set; }
    //public object Merchant { get; internal set; }
}

我已经在数据库中建立了连接并成功进行了播种。 现在我正在尝试使用此功能在其他两个没有关系的对象之间建立新的关系

ContextClass _db = new ContextClass();
public bool createRelationShip(int MerchantId, int OperatorId)
    {
        var _mm = new MerchantManager();
        var _om = new OperatorManager();
        var _merchat = _mm.GetMerchant(MerchantId);//gets merchant object 
        var _operator = _om.GetOperator(OperatorId);//gets operator object 
        if (_merchat != null && _operator != null)
        {

            _merchat.Operators.Add(_operator);//supposed to create relationship
                                            //the same way as I did in seeding
             _db.Merchants.Add(_merchat);
            //what next??
            return true;
        }
        return false
    }

我不知道如何将关系添加到数据库中。

1 个答案:

答案 0 :(得分:0)

您正试图添加一个ID已经存在的商家。您与

建立了关系
_merchat.Operators.Add(_operator);

删除行

_db_Merchants.Add(_merchat);

并替换为

_db.SaveChanges();