Никакое различие как таковое.
Convert.ToInt32()
вызовы int.Parse()
внутренне
За исключением одной вещи Convert.ToInt32()
возвраты 0
, когда аргумент null
Иначе оба, работают тот же путь
Знаете ли вы, что вашим объектам не нужно сопоставлять один в один с базой данных? В частности, вы можете опускать столбцы или даже целые таблицы, которые не имеют отношения к делу.
Модель сущности задумана как концептуальная модель. Вы можете легко создать набор сущностей для доступа к одному набору клиентов (возможно, веб-сервисам) и другому набору, сопоставив его с той же базой данных, которая предназначена для другого клиента (возможно, веб-приложения).
На с другой стороны, я всегда рекомендую никогда не раскрывать объекты Entity Framework через веб-службу. К сожалению, Microsoft предоставляет свойства, зависящие от реализации, помечая их с помощью [DataMember]. Я только что попробовал это с помощью простой службы, возвращающей SalesOrderHeader из AdventureWorks. Мой клиент получил прокси-версии следующих типов EF:
Это не то, о чем ваши клиенты должны знать.
Я предпочитаю открывать объекты передачи данных и копировать свойства от одного до другого. Очевидно, что это лучше делать путем отражения или генерации кода, чем вручную. Раньше я делал это с помощью генерации кода (шаблоны T4).
Вариант, который я не пробовал, - AutoMapper .
Мы используем отдельные классы для объектов DataContract. У нас есть интерфейс с одним методом, ToContract (), и все наши сущности реализуют этот интерфейс в файле частичного класса. Это дополнительная работа, и это шаблон, но кажется, что это самый простой способ добиться разделения и детализации контроля, которые нам нужны.
В основном я вижу две вещи, которые вы можете сделать:
Марк