Как вы на самом деле выполняете отношения в Entity Framework 4 Code-First CTP 5? - PullRequest
7 голосов
/ 19 января 2011

Я хотел бы привести короткий пример того, как вы на самом деле выполняете отношения в Entity Framework 4 Code-First CTP 5?

Хотелось бы привести пример для таких отношений:

* one-to-many
* many-to-many

Большое спасибо!

1 Ответ

10 голосов
/ 19 января 2011

Один к одному

public class One
{
  public int Id {get;set;}
  public virtual Two RelationTwo {get;set;}
}

public class Two
{
 public int Id {get;set;}
 public virtual One RelationOne {get;set;}
}

Что следует отметить, это должно быть виртуальным

Один ко многим

public class One
{
  public int Id {get;set;}
  public virtual ICollection<Two> RelationTwo {get;set;}
}

public class Two
{
 public int Id {get;set;}
 public virtual One RelationOne {get;set;}
}

Многие ко многим

public class One
{
  public int Id {get;set;}
  public virtual ICollection<Two> RelationTwo {get;set;}
}

public class Two
{
 public int Id {get;set;}
 public virtual ICollection<One> RelationOne {get;set;}
}

обратите внимание, что это должна быть ICollection

Следующие ссылки могут быть полезны, нажмите и нажмите

Надеюсь, это поможет.

РЕДАКТИРОВАТЬ

Обновлено, чтобы включить один ко многим.

РЕДАКТИРОВАТЬ # 2

Обновлен с учетом возможности выполнения сценария "Счет-фактура" <->, который был запрошен комментарием.

примечание: это не проверено, но должно поставитьВы в правильном направлении

public class Invoice
{
    public int Id {get;set;}
    //.. etc. other details on invoice, linking to shipping address etc.

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

public class InvoiceProduct
{
    public int Id {get;set;}
    public int Quantity {get;set;}
    public decimal Price {get;set;} // possibly calculated
    //.. other details such as discounts maybe

    public virtual Product Product {get;set;}
    public virtual Invoice Order {get;set;} // maybe but not required
}

public class Product
{
    public int Id {get;set;}
    //.. other details about product
}

Используя это, вы можете затем перебрать все элементы в счете-фактуре и затем foreach иметь возможность показать детали счета-фактуры по каждому пункту, а также описание изсам продукт.

...