将POCO映射到实体框架中的实体

时间:2009-12-02 14:52:52

标签: visual-studio-2008 entity-framework c#-3.0

我在Visual Studio 2008中使用EF,因此我没有将POCO与EF集成。

由于我们有一个n层应用程序,我们不断地将POCO映射到实体,实体不会被抛到上层,我也会使用Automapper进行映射并手动映射。

我们遇到的一个大问题是从POCO映射到实体。

如果我要添加一个与现有实体有关系的新实体(例如为现有客户添加新帐户),我有现有实体POCO,需要获取来自数据库的相关实体(例如客户端),这只是非常慢的事情。

我的问题是:

如何在不调用数据库的情况下,从POCO对象创建一个正确附加到上下文及其所有内容的实体?

2 个答案:

答案 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);

根本没有数据库访问权限。