2015-03-26 9 views
0

Я немного отстаю от времени доступа к данным и должен быть указан в правильном направлении. В настоящее время у меня есть только одна таблица SQL-сервера SQL с примерно 35 столбцами. Я создаю веб-службу WCF для обеспечения доступа к ней, и я пытаюсь найти самый быстрый способ связать веб-службу на базе C# с базой данных.Быстрый доступ CRUD для простой схемы SQL

Я смотрел на Entity Framework, но он кажется довольно тяжелым, и все, что я нашел на нем, похоже, предполагает, что вы уже знаете что-то об этом, поэтому я не хотел слишком заходить в него, если это неправильный путь. Я не полностью продаю идею генерации SQL в приложении. У меня уже есть класс DataContract со свойствами для каждого столбца в таблице, я просто ищу автоматический способ сопоставить столбцы со свойствами и свойствами с параметрами столбцов/sproc. Я уже написал код, который использует отражение для сопоставления данных из другого источника в этот DataContract (сопоставление имени свойства со словарем дополнительных сопоставлений в качестве резервной копии), поэтому здесь не так много работы, но я хотел видеть что еще доступно. Чего я хочу избежать, это написать каждый PropertyName = ColumnName.Value. Есть ли что-то легкое встраивание в VS2010 .NET 4.0 для простого случая? Будет ли прямой вызов хранимой процедуры через EF, как упоминалось, here - хороший вариант? Он выглядит немного устаревшим.

+0

Возможно, вам стоит взглянуть на [NHiberante] (http://nhibernate.info/) – chomba

+0

ИМХО. Учебное бремя для Entity Framework и NHibernate примерно одинаковое. –

+0

@DavidTansey Хорошо, это не хороший знак. Я не могу найти ничего (что работает) о сопоставлении хранимой процедуры с существующим POCO. Каждый раз, когда я смотрел на Entity Framework, всегда было более быстрое решение, поэтому я все еще не знаком с ним. Я очень удивлен, что это трудно найти, как сопоставить столбцы db с существующим классом с его использованием _ORM tool_. Я мог бы уже сам закодировать его в то время, которое я потратил, пытаясь понять, как использовать EF. Поэтому в этот момент я буду, но все равно заинтересован, чтобы увидеть, есть ли лучший ответ, которого я просто не могу найти. – xr280xr

ответ

0

Мне нравится Dapper, «micro-ORM». Он используется SO. Я использовал его красиво как «автоматический способ сопоставления столбцов с свойствами» и, похоже, также выполняет «свойства обратно в столбцы/параметры sproc», но я не использовал его для этого. Это превосходно - я прошел через 5 минут после получения Nuget. Я новичок в EF и не рекомендую его без руководства.

IEnumerable<TModel> result; 
    using (MySqlConnection conn = new MySqlConnection(_mysqlConnString)) 
    { 
     // "Query" is a Dapper extension method that stuffs the datareader into objects based on the column names 
     result = conn.Query<TModel>("Select * from YourTable"); 
    } 
    // do stuff with result 

Это ссылка на полный пример, а не только на кусок, который я вытащил из своего текущего проекта. http://www.tritac.com/bp-24-dapper-net-by-example

прочее Информация о перечне: c-sharpcorner.com/UploadFile/4d9083/... и liangwu.wordpress.com/2012/08/16/dapper-net-samples об этом говорят.

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

+0

Спасибо! Я закончил работу с EntityFramework, прежде чем получить ответ, но это звучит неплохо. EF 5 или выше, возможно, был хорошим вариантом, но 4.4 не стал впечатляющим. Одна из проблем, которые у меня возникли, заключалась в том, что я не мог удалить все записи из таблицы (через ExecuteSqlCommand), а затем сохранить записи в таблицу в одной транзакции с базой данных.Он поддерживает только TransactionScope, который является довольно дрянным решением, когда на самом деле требуется только одна транзакция SQL. Сопоставление sproc с существующим POCO было возможно в 4.4, но было неуклюжим, и я закончил тем, что использовал только entites – xr280xr