2012-11-27 3 views
3

응용 프로그램을 만들 것입니다.하지만 어떤 프레임 워크를 사용해야할지 모르겠습니다. 내가 일한 곳에서 그들은 코드 티어와 함께 Ntiers를 사용했다. 넷 티어는 무료이지만 코드 메이트는 아니다. 엔티티 프레임 워크에 대해 알게되었지만 사용 방법은 "리포지토리 패턴"이라는 것을 사용하는 것이지만 사용 방법에 대해서는 많은 의구심이 있습니다. 나는 커다란 예산과 그 자신을 가지고 있지 않다. 자동으로 클래스를 만들고, 삭제하고, 능력을 만들고, 구현할 코드를 남겨 둘 수있는 비싼 툴을 가질 여유가 없다. 그래서 어떤 방법으로 가야할지 모르겠습니다. 엔티티 프레임 워크 (이 제품은 무료입니까?)를 사용해야합니까, 아니면 사용할 수있는 다른 제품이있을 수 있습니다.올바른 프레임 워크 선택

내가 예상 한대로 좋은 조언을 해주시면 감사하겠습니다. 결국이 응용 프로그램은 성장하고 성장하며 유지하기 쉽습니다.

추 신 : 엔티티 프레임 워크와 리포지토리 패턴이 최선의 선택 일 것입니다.

데이터 계층 : Ibatis.Net 또는 NHibernate에가 (주로 내가 사용 모두 NHibernate에 CURD을 위해, 그리고 iBatis를 C#을 Asp.net 및 MSSQL 2008

+0

.NET ORM - http://stackoverflow.com/questions/1377236/nhibernate-entity-framework-active-records-or-linq2sql/ –

+0

저는 CodeSmith Tools에서 일하고 있으며 항상 기꺼이하고 있습니다. 가격 책정과 관련하여 고객과 협력합니다. 판매를 이메일로 보내십시오 (codesmithtools.com/contactus). 우리는 EF 템플릿을 가지고 있지만 저장소 패턴을 사용하지 않습니다. 그러나 일반 저장소 패턴을 사용하기 쉽게 템플릿/생성 된 코드를 사용자 정의 할 수 있습니다. 또한 오래된 말 : 시간을 절약 할 수있는 도구는 금 가격으로 가치가 있습니다. –

답변

4

엔터티 프레임 워크 code first and automatic migrations은 가장 쉬운 ORM 중 하나입니다. 유연하고 Microsoft 스택에서 잘 지원되며 데이터베이스를 개발하는 가장 빠른 방법 중 하나 인 코드를 먼저 사용합니다.

먼저 Entity Framework 코드를 사용하여 데이터 모델을 일반 C# 클래스로 정의합니다. 이는 제품 테이블에 해당합니다.

public Product { 

    public int Id { get; set; } 
    public string Name { get; set; } 
} 

데이터베이스 컨텍스트를 만듭니다.

public MyDbContext : DbContext { 

    public DbSet<Product> Products { get; set; } 
} 

는 웹에 연결 문자열을 추가합니다.config를 실행하고 패키지 관리자 콘솔에서 다음 명령을 실행하십시오.

>Enable-Migrations –EnableAutomaticMigrations 
>Update-Database 

이제 제품 테이블에 기능 데이터베이스가 있습니다. 클래스를 변경하면 Update-Database를 다시 실행하면 스키마가 자동으로 마이그레이션됩니다.

는 새로운 제품을 추가하려면 :

저장소 패턴으로
using (var db = new MyDbContex() 
{ 
    // get product with id == 1 
    Product product = db.Products.Single(p => p.Id == 1); 
} 

, 그냥 design pattern의 :로

using (var db = new MyDbContex() 
{ 
    Product product = new Product() { Id = 1, Name = "Tablet" }; 

    db.Products.Add(product); 

    db.SaveChanges(); 
} 

데이터를 쿼리하기 쉽게된다. variations of the repository pattern은 매우 다양하지만 실제로는 데이터 액세스 계층과 데이터 저장소를 구분하는 것입니다. 따라서 외부 데이터베이스를 사용하지 않고도 단위 테스트를 더 쉽게 수행 할 수 있습니다.

의견에서 편집 : EF 및 저장 프로 시저를 사용하는 몇 가지 방법이 있습니다. Does Entity Framework Code First support stored procedures?Using Stored Procedure to Insert Data을 참조하십시오.

+0

통찰력, 한 가지 질문에 대해 고맙습니다. 특정 데이터를 제공하기 위해 저장 프로 시저를 만들어야하는 경우 어떻게 작동합니까? – user710502

+0

Ibatis.Net은 SP를 호출하여 객체로 변환하는 것이 좋습니다. –

+0

내 대답을 편집하여 저장 프로 시저 사용에 대한 정보를 추가합니다. – mfanto

2

당신이 선택할 수있는 다른 목록을 사용하여

Query를위한 .NET (예 : SP 호출, 동적 쿼리).

Spring.Net : IOC의 도우미

Asp.NET MVC : MVC 프레임 워크.

Benifit는 다음과 같습니다. IBatis, NHibernate 및 Spring.Net은 Java 버전과 매우 유사하므로 많은 문서를 찾을 수 있습니다.

내가 말할 수있는 것은 훌륭한 ORM (EF, Nhibernate 또는 Ibatis)을 갖춘 3 단계가 복잡한 프로젝트의 가장 좋은 실습이며 유지 관리 및 협력이 더 쉽다는 것입니다. 프로젝트가 매우 간단하다면 LINQ + WebForm이 몇 시간 안에 당신을 도울 수 있습니다. MVC를 전혀 버릴 수 있습니다.

2

저는 개발자로서 어디서 무엇을하고 싶은지에 따라 다릅니다. 비용면에서 Entity Framework는 Visual Studio에서 무료입니다. Fluent NHibernate는 EF와 매우 유사하며 Oracle, MySql, MSSQL 및 you can get it super easy via nu get에서도 작동합니다.

저장소 패턴은 컬렉션을 가져 오는 패턴 일뿐입니다.

나는 ORM 모두 장단점이 있다고 말할 것입니다.

관련 문제