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());
}
{
ObjectQuery<Product> productQuery = context.Product;
Console.WriteLine(productQuery.ToTraceString());
}
输出结果如图: