具有现有域模型的实体框架4

我目前正在考虑从流利的nHibernate迁移到ADO.Net Entity Framework 4。
我有一个包含我用于nHibernate映射的域模型(pocos)的项目。 我已经在博客中读到可以在EF4中使用现有的领域模型,但我没有看到它的例子。 我见过使用EF4生成T4代码的例子,但还没有找到一个例子来说明如何在EF4中使用现有的领域模型对象。 我是EF4的一个新手,希望看到一些关于如何完成这个任务的范例。

感谢Aiyaz


快速演练:

  • 在Visual Studio中创建实体数据模型(.edmx),并清除edmx文件的“自定义工具”属性以防止代码生成
  • 使用与您的域类相同的名称在实体数据模型中创建实体。 实体属性也应该具有与域类中相同的名称和类型
  • 创建一个从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),则您的域类的属性必须是虚拟的 。 这是必要的,因为EF 4.0生成的代理将覆盖它们以实现更改跟踪。

    如果您不想使用自动代理创建,则需要自己处理更改跟踪。 有关详细信息,请参阅此MSDN页面

    链接地址: http://www.djcxy.com/p/60267.html

    上一篇: Entity Framework 4 with Existing Domain Model

    下一篇: Entity Framework 4, defining relationship