2010-09-10 122 views
1

需要一些帮助或实体框架v4的一些建议。实体框架v4和wpf

正如您所知,EF v4不支持延迟加载标量属性。如果我在模型中有一些实体对象,例如Order,它具有许多标量属性,但其中一些实体对象从DB加载很昂贵,例如附加文件。

正如我后面发现的,可以将这些昂贵的属性移动到另一个实体,例如Order1,并将它们重新映射到数据库表。因此,原始数据库表将映射到2个实体 - 订单 - 包含属性ID和名称以及订单1 - 与所有其他实体。

我需要做什么?在用户界面中,我将在左侧列表框中填充实体Order(ID - 所有订单的名称),并在列表框中单击订单右侧的所有其他昂贵属性Order1。来自Order1的属性延迟加载,并与工作savechanges,删除对象等...。

如何使订单的业务对象与实体分离以及如何使用wpf绑定进行设置?

感谢

回答

0

有2种型号的程序复杂化,并且可以是bug的来源。我宁愿使用单个模型,然后根据需要选择性地加载项目。

我的意思是只使用一个实体框架模型。看起来你已经这样做了。在需要时,您需要执行以明确加载数据,请参阅http://msdn.microsoft.com/en-us/library/bb896249.aspx

这实际上是一个来自MS的设计决定,强制您知道在哪些时间需要哪些数据。随着自动延迟加载它的作品,但后来由于缩放问题你可以进入问题。

+0

你的意思是2个实体相同的数据库表?或2个实体框架模型?我只有1个实体框架模型。如何选择性加载项目?当我只有一个订单数据库表的实体时,我可以加载2个这样的列: var query = db.Order.Select(o => new {IDorder = o.IDorder,Name = o.Name}) .ToList ().Select(x => new Order {IDorder = x.IDorder,Name = x.Name}); 但这样的查询savechanges由于上下文...不工作。 – vikox 2010-09-10 19:41:31