新手,EF4,一对多,如何从子查询到父?

时间:2021-01-30 11:55:18
父:

    public class Product
    {
        public int ID { get; set; }
        public string name { get; set; }
        public virtual ICollection<ProductItem> items { get; set; }//一对多
    }

子:

    public class ProductItem
    {
        public int ID { get; set; }
        public Product product { get; set; }//按理,这个对象是指向父
        public string package { get; set; }
        public int pack { get; set; }
        public decimal price { get; set; }
    }


EF:

    public class Purchase : DbContext
    {
        public Purchase() : base("Purchase") { }//Purchase表示数据库链接
        public DbSet<Product> product { get; set; }
        public DbSet<ProductItem> product_item { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            //一对多,这句正常
            modelBuilder.Entity<Product>().HasMany(p => p.items).WithRequired(i => i.product);
            //下面这句是想从子查询到父
            modelBuilder.Entity<ProductItem>().HasRequired(i => i.product);
        }
    }


查询:

            Purchase db = new Purchase();

            ProductItem item = db.product_item.Single(i => i.ID == id);
            
            if (item == null)
                return View();
            //下面这句出错,product对象为空,请问我如何才能让product有值,指向父
            ViewBag.product_name = item.product.name;


请大家指教,谢谢

12 个解决方案

#1


解决了
public virtual Product product { get; set; }

#2


该回复于2012-06-06 13:17:24被版主删除

#3


该回复于2012-05-29 15:48:33被版主删除

#4


引用楼主  的回复:
父:
C# code

    public class Product
    {
        public int ID { get; set; }
        public string name { get; set; }
        public virtual ICollection<ProductItem> items { get; set; }//一对多
    }……

LZ晒晒你的解决方案啊,
CSDN是各学习和提高的地方
大家一起上升啊!!!

#5


已经在一楼说了啊

#6


该回复于2012-06-21 09:48:37被版主删除

#7


引用 3 楼  的回复:
 这么快就解决了


兔子 这可不好

#8


引用 3 楼  的回复:
 这么快就解决了


哈哈···

#9


引用 3 楼  的回复:
 这么快就解决了

哈哈

#10


太快了吧

#11


没看太懂!汗

#12


自己解决的 不错~~ 

EF问题 可以看下我的文章哦~~ 

http://www.cnblogs.com/wlflovenet/archive/2011/12/30/EF11.html

帮忙解决各种EF问题 

#1


解决了
public virtual Product product { get; set; }

#2


该回复于2012-06-06 13:17:24被版主删除

#3


该回复于2012-05-29 15:48:33被版主删除

#4


引用楼主  的回复:
父:
C# code

    public class Product
    {
        public int ID { get; set; }
        public string name { get; set; }
        public virtual ICollection<ProductItem> items { get; set; }//一对多
    }……

LZ晒晒你的解决方案啊,
CSDN是各学习和提高的地方
大家一起上升啊!!!

#5


已经在一楼说了啊

#6


该回复于2012-06-21 09:48:37被版主删除

#7


引用 3 楼  的回复:
 这么快就解决了


兔子 这可不好

#8


引用 3 楼  的回复:
 这么快就解决了


哈哈···

#9


引用 3 楼  的回复:
 这么快就解决了

哈哈

#10


太快了吧

#11


没看太懂!汗

#12


自己解决的 不错~~ 

EF问题 可以看下我的文章哦~~ 

http://www.cnblogs.com/wlflovenet/archive/2011/12/30/EF11.html

帮忙解决各种EF问题