2

在我的应用程序中,一个事务最多可以有四个与之关联的项目。当我意识到当我打电话给一个transactionId当我意识到当我调用 a来显示某个交易的细节我做了一些研究,发现多对多似乎是要走的路。我以前从未与多对多合作过。如何设置这样的东西?教程,指南任何东西都会有很大帮助,因为我被卡住了。

物品型号

     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
     }
4

1 回答 1

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; }
 }

现在你需要告诉实体框架你有一个多对多的关系。为此,我们可以像这样OnModelCreating()在您的内部使用覆盖DbContext

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

现在您将这两个表链接在一起。希望这可以帮助 :)

于 2013-08-26T08:21:23.340 回答