我想将表单上的控件绑定到数据库中的数据,绑定发生在代码背后。
我想使用三层模式,DAL层将使用实体框架,BLL将使用DAL来检索数据,并使用我的表单来显示数据。
假设有一个名为Product的实体对象,它有3个属性: Name、Count、Price
我想将它们绑定到from上的3个文本框。
在后台代码中,我调用了BLL的方法,该方法将调用DAL方法来检索所需的实体对象……
这就是问题所在,为了在表单上绑定数据,表单必须“知道”BLL返回的这个entityObject。
所以我可以这样做:
DataAccessLayer.Product product = BusinessLogicLayer.GetProduct(someid);
textbox1.text=product.name;
textbox2.text=product.price;
....
但这打破了3层模式!怎么做?是否创建一个新对象来保存此数据?
发布于 2011-01-24 00:05:22
我通常将业务对象和处理这些对象的接口(如IRepository )分离到一个域项目中。然后我的DAL可以引用这个项目,我的web项目也可以。
更新
项目结构:
的实体/接口<代码>F211
发布于 2011-01-23 23:56:36
使用接口。这样,您的表单就知道了一些IProduct,但不需要知道具体的实现。例如,您可以使用NInject来进行依赖项注入。
发布于 2011-01-24 00:50:03
最常见的方式也是最佳实践是使用客户端存储库。您可以将实体抽象为域对象。您可以使用像AutoMapper这样的映射器来映射由服务层返回的数据传输对象(DTO)和由应用层使用的域实体。通过将其抽象到存储库之后,您的应用程序层不需要了解服务层,并且两者可以独立变化。
https://stackoverflow.com/questions/4774700
复制相似问题