EF4中多表映射为一个实体

这儿有两张表,拥有相同的主键,这里要把这两张表映射为一个实体。

 

  将这两张表选入EDM中:

 

  下面我们开始将这两张表映射为一个实体:

 1.复制实体ProductImage中的ProductImage到实体Product中

 2.删除实体ProductImage ,这时它会弹出提示信息是否将表从存储模型中删除,选不。

 

 3. 单击实体Product,查看Mapping Details窗口

 4. Mapping Details窗口中,单击“Add a Table or View” 选择表ProductImage。

 

  这样修改过后的model就像下面这样,两个表合为一个实体模型:

 

 

  在我们现有的系统的表中添加新的列这样的事情看起来很正常,但有时却不愿意添加新列改变现有的代码,这样的话我们便可以把需要添加的新列添加到一张单独的表中。

这种将两个表合为一个实体的过程被称作垂直分割(vertical splitting)

  垂直分割的缺点是对每个表都会有一个InnerJoin操作,我们通过下面的代码可以看到:

  代码

            using (EFDemoEntities context = new EFDemoEntities())
            {
                ObjectQuery
<Product> productQuery = context.Product;
                Console.WriteLine(productQuery.ToTraceString());
            }

 

 

输出结果如图: 

 

 

posted @ 2010-06-30 21:19  i'm zjz  阅读(2340)  评论(0编辑  收藏  举报