我在Visual Studio 2008中使用EF,因此我没有将POCO与EF集成。
由于我们有一个n层应用程序,我们不断地将POCO映射到实体,实体不会被抛到上层,我也会使用Automapper进行映射并手动映射。
我们遇到的一个大问题是从POCO映射到实体。
如果我要添加一个与现有实体有关系的新实体(例如为现有客户添加新帐户),我有现有实体POCO,需要获取来自数据库的相关实体(例如客户端),这只是非常慢的事情。
我的问题是:
如何在不调用数据库的情况下,从POCO对象创建一个正确附加到上下文及其所有内容的实体?
答案 0 :(得分:1)
尝试EF POCO适配器示例: http://code.msdn.microsoft.com/EFPocoAdapter
答案 1 :(得分:1)
设置EntityKey
而不是从DB加载相关对象(注意在EF 4中有更好的方法来执行此操作;这适用于EF 1):
var account = new EntityAccount
{
Name = pocoAccount.Name,
// etc.
};
// now instead of doing account.Client = Context.Clients.Where(...
account.ClientReference.EntityKey =
new EntityKey("MyEntities.Clients", "Id", pocoAccount.Client.Id);
根本没有数据库访问权限。