构造函数中的EF关系

时间:2017-02-28 14:37:54

标签: asp.net asp.net-mvc entity-framework

我收到错误;

  

无法隐式转换ICollection中的类型Sale

当我这样做时,我已经在一些例子中看到了它,并且可以这样做。

Sale sale= new Sale(){ Id = 1 };
Service service = new Service() { Name= "SomeService",Sales=sale}; //I can't assign sale


public class Service: EntityBase
{
    //public Service()
    //{
    //    Sales= new HashSet<Sale>();
    //}
    public string Name{ get; set; }
    public virtual ICollection<Sale> Sales{ get; set; }
}

我该如何解决? 我不想这样做:service.Sales.add(fact),如果有另一种方式

2 个答案:

答案 0 :(得分:1)

如果您非常反对使用.Add并希望将一个或多个Sale实例传递给Service实例并将其添加到Sales集合,那么您可以添加第二个构造函数,它接受一个或多个Sale个实例。

public class Service: EntityBase
{
    public Service() // empty constructor needed for EF
    {}

    public Service(params Sale[] sales)
    {
      Sales = new List<Sale>(sales);
    }

    public string Name{ get; set; }
    public virtual ICollection<Sale> Sales{ get; set; }
}

// example with 2 sales
Sale sale1 = new Sale(){ Id = 1 };
Sale sale2 = new Sale(){ Id = 2 };
Service service = new Service(sale1,sale2) { Name= "SomeService" };

保留空构造函数,因为EF使用它。

答案 1 :(得分:0)

你在这里说的是Sale = List();

制作销售清单,向其添加销售,然后在构造函数中说出Sales =您所做的销售清单。

Sale sale = new Sale(){ Id = 1 };

List<Sale> sales = new List<Sale>();

sales.Add(sale);

Service service = new Service() { Name = "Service", Sales = sales };