닷넷 프레임워크 4.0에 도입된 Dynamic 기능을 활용해서 가볍고 동적으로 데이터(DB)를 접근할 수 있는 컴포넌트

 

보통 데이터베이스의 데이터를 코드를 쉽게 접근하는 방법으로 ORM 모델을 사용하거나 mini-ORM을 사용하기도 하는데 Simple.Data를 사용하면 코드를 통해서 자동으로 DB 쿼리문이 만들어진다.

오픈소스로 GitHub를 통해서 얻을 수 있다.

https://github.com/markrendle/Simple.Data



public User FindUserByEmail(string email)

{

    return Database.Open().Users.FindAllByEmail(email).FirstOrDefault();

}

이 코드는 User 테이블의 Email 필드를 키로 모든 데이터를 가져오는 것이다.

Users.FindAllByEmail 동적코드로 



위의 Database.Open().Users.FindAllByEmail(email).FirstOrDefault();

ADO.NET 코드로 표현하면 아래와 같다.


public User FindUserByEmail(string email)

{

    User user = null;

    using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["Default"].ConnectionString))

    using (var command = new SqlCommand("select id, email, hashed_password,

                                                                     salt from users where email = @email", connection))

    {

        command.Parameters.Add("@email", SqlDbType.NVarChar, 50).Value = form.Email);

        connection.Open();

        using (var reader = command.ExecuteReader())

        {

            if (reader.Read())

            {

                user = new User { Id = reader.GetInt32(0), Email = reader.GetString(1),

                                          Password = reader.GetString(2), salt = reader.GetString(3)};

            }

        }

    }

    return user;

}


Simple.Data를 사용하면 위의 코드가 아래의 단 한줄로 끝난다 !!! 

Database.Open().Users.FindAllByEmail(email).FirstOrDefault();



지원하는 데이터베이스

ADO-based access to relational databases, with providers for:

  SQL Server 2005 and later (including SQL Azure)

  SQL Server Compact Edition 4.0

  Oracle

  MySQL 4.0 and later

  SQLite

  PostgreSQL

  SQLAnywhere

  Informix

MongoDB

OData



SimpleData에 대해서 더 자세히 알고 싶다면 아래의 문서를 참고한다.
http://simplefx.org/simpledata/docs/




MongoDB

MongoDBSimple.Data.MongoDB 라고 따로 분리 되어 있다. 

https://github.com/craiggwilson/Simple.Data.MongoDB


주의 사항

1. 몽고디비 컬렉션의 컬럼 이름이 ID 이면 안된다.

이유는 기본으로 몽고디비는 컬렉션에 문서를 만들 때 _id 컬럼을 만드는데 우리가 ID 컬럼을 만들면 Simple.Data.MongoDB에서 이름을 부여할 때 중복된다. -_-

2. 쿼리를 하면 모든 컬럼 값을 다 가져온다. 일부만 가져올 수 없다.

Cast도 그냥 정적 클래스(혹은 구조체)에 담아주는 것이지 일부 컬럼만 가져오는 것이 아님

저작자 표시
신고
by 흥배 2014.08.22 08:00
| 1 |

티스토리 툴바