【问题标题】:Generated Entity Framework Code生成的实体框架代码
【发布时间】:2010-09-15 23:49:49
【问题描述】:

Entity Framework 4 生成的代码——主要是 AddTo 和 Create 方法——我应该直接使用它们吗?我试图理解 Create 方法。 CreateDinner 方法(在 NerdDinner 中)例如是这样的:

public static Dinner CreateDinner(global::System.Int32 dinnerID, global::System.String title, global::System.DateTime eventDate, global::System.String description, global::System.String hostedBy, global::System.String contactPhone, global::System.String address, global::System.String country, global::System.Double latitude, global::System.Double longitude)
    {
        Dinner dinner = new Dinner();
        dinner.DinnerID = dinnerID;
        dinner.Title = title;
        dinner.EventDate = eventDate;
        dinner.Description = description;
        dinner.HostedBy = hostedBy;
        dinner.ContactPhone = contactPhone;
        dinner.Address = address;
        dinner.Country = country;
        dinner.Latitude = latitude;
        dinner.Longitude = longitude;
        return dinner;
    }

没有 SubmitChanges() 并且当我查看引用时,该方法不会在任何地方被调用。这种方法的目的是什么?

【问题讨论】:

    标签: c# .net asp.net-mvc entity-framework entity-framework-4


    【解决方案1】:

    Entity Framework 默认代码生成模板为模型中的每个实体对象创建一个Factory Method。这个静态 方法让您可以快速创建一个新实体,它的参数列表由您的类中的所有不可为空的属性(而不是全部)组成。
    因此,它并不意味着保存或提交任何东西到数据库。

    【讨论】:

    • 我想我想了解工厂模式如何与这个实体框架代码相适应。你能帮我理解为什么使用这个工厂方法而不是仅仅使用实体的构造函数来创建我的实体更快:Entity e = new Entity()
    • 正如我所说,它的参数列表仅包含类中的不可为空的属性,因此您可以快速提出将该对象保存在数据库中的最低要求。当然,您可以直接使用对象初始化语法或类构造函数,但是您可能会忘记初始化所有不可为空的字段,因此您的 Save 将在运行时失败。除此之外,它并不比构造函数更快或更快,因为正如您所看到的,即使这个工厂方法也只是一个对象初始化器实现。
    猜你喜欢
    • 2012-04-15
    • 1970-01-01
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    • 2014-09-04
    • 1970-01-01
    相关资源
    最近更新 更多