2013-08-26 4 views
2

В моем приложении транзакция может содержать до четырех элементов, связанных с ней. Я столкнулся с проблемой, когда понял, когда я звоню в transactionId, чтобы отобразить специфику определенной транзакции, как я должен был вытащить связанные с ней элементы? Я сделал некоторые исследования и обнаружил, что многие из многих, похоже, подходят. Я никогда раньше не работал со многими. Как установить что-то подобное? Учебники, руководства, все будет большой помощью, потому что я застрял.настройка db для многих-многих отношений entity framework mvc 4

модель товара

 public class Item 
    { 
     public int user_id { get; set; } 

     public int ID { get; set; } 
     public string item_name { get; set; } 
     public string item_description { get; set; } 
     public string item_code { get; set; } 
     public DateTime dateAdded { get; set; } 
     public int catId { get; set; } 
     public int? isSelected { get; set; } 
     public int isQuick { get; set; } 
    } 

    public class ItemDBContext : DbContext 
    { 
     public ItemDBContext() 
      : base("name=ItemDbContext") 
     { } 

     public DbSet <Item> Items { get; set; } 
     public DbSet<Category> Categories { get; set; } 
     public DbSet<Transaction> Transactions { get; set; } 
    } 

модель транзакций

 public class Transaction 
    { 
     [Key] 
     public int transactionID { get; set; } 

     public int FromUserID{ get; set; }//user logged in 
     public int toUserId { get; set; } //user to be sent 
     public int itemForId { get; set; } //single item 
     public int itemsSent { get; set; }//multiple values 
    } 

ответ

2

Все, что вам нужно сделать, это добавить свойство навигации к вашей транзакции модели, как это:

public class Transaction 
{ 
    [Key] 
    public int transactionID { get; set; } 

    public int FromUserID{ get; set; }//user logged in 
    public int toUserId { get; set; } //user to be sent 
    public int itemForId { get; set; } //single item 
    public int itemsSent { get; set; }//multiple values 

    //Navigation Property 
    public ICollection<Item> items { get; set; } 
} 

Теперь добавьте навигации к вашему товару Модель:

public class Item 
{ 
    public int user_id { get; set; } 

    public int ID { get; set; } 
    public string item_name { get; set; } 
    public string item_description { get; set; } 
    public string item_code { get; set; } 
    public DateTime dateAdded { get; set; } 
    public int catId { get; set; } 
    public int? isSelected { get; set; } 
    public int isQuick { get; set; } 
    //Navigation Property 
    public ICollection<Transaction> transactions { get; set; } 
} 

Теперь вам нужно сообщить структуре Entity, что у вас есть отношение «многие ко многим». Для этого мы можем использовать OnModelCreating() переопределение внутри вашей DbContext так:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<Transaction>().HasMany(e=>e.items).WithMany(e=>e.transactions); 
} 

теперь вы эти две таблицы связаны между собой. Надеюсь, это поможет :)

+0

Спасибо, что я действительно борется. Значит, мне не нужно много отношений? – rogerthat

+1

, если у одной транзакции может быть много элементов (в вашем случае 4), и каждый элемент может иметь только одну родительскую транзакцию, тогда да, вам нужно отношения «один ко многим». но теперь, когда я думаю об этом, вам понадобится много-ко-многим, если несколько транзакций могут иметь один и тот же элемент. это правда? – hjavaher

+0

Да, несколько транзакций могут иметь один и тот же элемент – rogerthat

Смежные вопросы