我目前正在考虑从流畅的nHibernate迁移到ADO.Net实体框架4 我有一个项目包含我用于nHibernate映射的域模型(pocos)。我在博客中读到可以使用我现有的域模型和EF4,但我没有看到它的例子。我已经看过使用EF4生成T4代码的例子,但还没有看到如何使用EF4使用现有域模型对象的示例。我是EF4的新手,想看看如何完成这一步的一些示例。
由于 Aiyaz
答案 0 :(得分:6)
快速演练:
ObjectContext
的类以公开实体(通常与.edmx文件位于同一项目中)ObjectSet<TEntity>
类型的属性示例代码:
public class SalesContext : ObjectContext
{
public SalesContext(string connectionString, string defaultContainerName)
: base(connectionString, defaultContainerName)
{
this.Customers = CreateObjectSet<Customer>();
this.Products = CreateObjectSet<Product>();
this.Orders = CreateObjectSet<Order>();
this.OrderDetails = CreateObjectSet<OrderDetail>();
}
public ObjectSet<Customer> Customers { get; private set; }
public ObjectSet<Product> Products { get; private set; }
public ObjectSet<Order> Orders { get; private set; }
public ObjectSet<OrderDetail> OrderDetails { get; private set; }
}
就是这样......
重要提示:如果您使用自动代理创建进行更改跟踪(ContextOptions.ProxyCreationEnabled
,默认情况下为true),则域类的属性必须为虚拟< / strong>即可。这是必要的,因为EF 4.0生成的代理将覆盖它们以实现更改跟踪。
如果您不想使用自动代理创建,则需要自己处理更改跟踪。有关详细信息,请参阅this MSDN page