2010-09-15 7 views
1

Код, который генерируется Entity Framework 4 - в основном методы AddTo и Create - следует ли использовать их напрямую? Я пытаюсь понять метод Create. Метод CreateDinner (в NerdDinner), например, это:Код генерируемой сущности Entity Framework

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() и при просмотре ссылок, этот метод не вызывается в любом месте. Какова цель этого метода?

ответ

4

Шаблон генерации кода по умолчанию Entity Framework создает для вашей цели объект Factory Method. Этот статический метод позволяет быстро создать новый объект, а список параметров для него состоит из всех свойств, которые не являются nullable в вашем классе (а не во всех).
Следовательно, это не предназначено для сохранения или отправки чего-либо в БД.

+0

Я думаю, я пытаюсь понять, как шаблон Factory соответствует этому коду Entity Framework. Не могли бы вы помочь мне понять, почему быстрее создать объект, используя этот заводский метод, а не просто использовать конструктор объекта: Entity e = new Entity() – Prabhu

+1

Поскольку, как я уже сказал, его список параметров состоит только из свойств, которые не имеют значения nullable в вашем классе так что вы можете быстро найти минимальное требование для сохранения этого объекта в базе данных. Конечно, вы можете напрямую использовать синтаксис инициализатора объекта или конструктор классов, но тогда вы можете забыть инициализировать все поля, не содержащие значения NULL, и в результате ваш файл будет неработоспособным во время выполнения. Кроме этого, это не быстрее или быстрее, чем конструктор любыми способами, так как вы можете видеть, что даже этот заводский метод - это просто реализация инициализатора объекта. –

Смежные вопросы