Должен ли начинающий .Net беспокоиться о ORM или подождать, пока он получит больше опыта? - PullRequest
2 голосов
/ 29 июля 2010

Я относительно новичок в .Net и, в частности, в отношении базы данных.

Я планирую переписать некоторые устаревшие приложения VB6 с использованием .Net и C # с Visual Studio 2008.

Я изучал такие вещи, как строго типизированные наборы данных, адаптеры таблиц и т. Д. Это работает довольно хорошо, но я считаю, что строго типизированные наборы данных не могут быть полностью управляемыми, особенно когда схемы баз данных меняются, а код кажется более процедурным, чем объектно-ориентированным. Я нахожу, что он также часто загромождает код, и сгенерированные имена типов имеют тенденцию быть очень длинными ...

Учитывая, что я относительно неопытен в .Net, я действительно не хочу увеличивать свою кривую обучения еще больше, поскольку, в конце концов, у меня есть сроки ... Я смотрел на такие вещи, как NHibernate, и это выглядит пугающе ... Я не уверен, что у меня есть время, чтобы понять, как их XML-файлы и т. Д. Работают в данный момент ...

Короче говоря, стоит ли мне беспокоиться об ORM в данный момент или подождать, пока я накоплю больше опыта в .Net и ADO.net ... даже если это означает необходимость переписать приложение для использования ORM через несколько месяцев, когда Я успокоюсь.

Я понимаю, что это субъективный вопрос, но я уверен, что мне помогут ответы опытных разработчиков, которые путешествовали по обоим дорогам или должны были обучать новобранцев.

Заранее спасибо,

Ответы [ 4 ]

3 голосов
/ 29 июля 2010

Вы можете попробовать BLToolkit : это, помимо прочего, довольно простое ORM:

public abstract class PersonAccessor : DataAccessor
{
    [SqlText(@"SELECT * FROM Person WHERE FirstName = @firstName")]
    public abstract List<Person> GetPersonListByFirstName(string @firstName);

    [SprocName("sp_GetPersonListByLastName")]
    public abstract List<Person> GetPersonListByLastName(string @lastName);
}
2 голосов
/ 01 августа 2010

Я очень рекомендую заглянуть в LIGHTTSPEED от Mindscape.Превосходная платформа, построенная на действительно хороших принципах дизайна, сокращает время разработки, если вы овладеете основами.Также сделайте сравнение функций с nhibernate, структурой сущностей и т. Д.

1 голос
/ 29 июля 2010

Похоже, у вас есть несколько (я бы предположил, относительно небольших) приложений для перезаписи, поэтому я бы не захотел использовать ORM сразу.Для вашего первого приложения просто попробуйте написать код доступа к данным самостоятельно, используя ADO, но попробуйте и убедитесь, что все хорошо разделено, например, с помощью шаблона Repository .Таким образом, если вы решите, вы можете довольно легко поменять свой ADO DAL на что-либо, используя ORM.

Как только вы сделаете это самостоятельно, вы лучше поймете, что может сделать ORM.для вас и хотите ли вы использовать один или нет (что вы, вероятно, будете!).

Кроме того, и это действительно зависит от того, какой тип приложения вы пишете, но я бы предложил сначала отсортировать модель(основные классы вашего приложения, обычно «Сотрудник», «Заказ» и т. д.), а затем сделайте доступ к своим данным на основе этого.Делая это таким образом, вы можете использовать что-то вроде EF4, NHibernate и т. Д., Которые могут генерировать схему базы данных на основе ваших классов модели .Net.(Хотя это может означать, что вы не можете использовать Linq to SQL так же легко, так как для этого необходимо сначала создать базу данных).

Если вы действительно хотите использовать ORM и используете SQL Server, Linq to SQL легко начать.Основным недостатком является то, что вы не можете заниматься разработкой на основе модели, она поддерживает только SQL Server, и она больше не находится в активной разработке, так что, возможно, не стоит тратить время на изучение.

0 голосов
/ 29 июля 2010

Вам необходимо изучить какой-то метод доступа к данным, поэтому вы также можете использовать / изучать ORM.

Я бы пошел с Microsoft Entity Framework.Службы данных WCF: http://msdn.microsoft.com/en-us/data/bb931106.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...