2009-07-21 2 views
2

나는 Subsonic에 익숙하지 않으며 LINQ 템플릿 클래스를 사용하여 CRUD 작업을 수행하는 자연스러운 방법을 찾을 수없는 것 같습니다. 나는 액티브의 생각, 당신 수 : 나도 같은 일을 할 수있는 방법을아음속 3, 어떻게 LinqTemplates를 사용하여 CRUD?

Product p = new Product(); 
p.ProductCode = "xxx"; 
p.Add(); 

LINQTemplate 그러나 생성 된 클래스를 사용? 나는 제품 객체를 삽입하기 위해 아래와 같이 사용할 수 있습니다 :

db.Insert.Into<UnleashedSaaS.PRODUCT>(prod => prod.Code, prod => prod.Description).Values("Product1", "Product1 Desc").Execute(); 

누가 나에게 힌트를 줄 수 있습니까? 나는 정말로 감사 할 것입니다.

+0

+1. 나는이 같은 일을 아침 내내 생각하려고 노력해 왔습니다. 왜 이것이 내장되어 있지 않고 쉽게 할 수 없는지 나는 알지 못합니다. ActiveRecord가 훨씬 더 완벽 해 Linq에 관한 것 같습니다. – CodingWithSpike

답변

2

모든 CRUD는 SubSonicRepository에서 발생합니다. 예를 들어 다음과 같은 클래스가 있습니다.

public class ProductRepository : SubSonicRepository<Product> { 

    public ProductRepository() : base(new NorthwindDB()) { } 

    // need this here because base doesn't expose the DB class that I know of 
    protected NorthwindDB _db; 
    protected NorthwindDB DB { 
     get { 
      if (_db == null) _db = new NorthwindDB(); 
      return _db; 
     } 
    } 

    public void Save(Product product) { 
     if (product.ProductId == 0) { 
      Add(product); // Add is part of SubSonicRepository 
     } else { 
      Update(product); 
     } 
    } 

    public void Delete(Product product) { ... } 

    public List<Product> ListAll() { 
     var products = from p in DB.Products 
         select p; 

     return products.ToList(); 
    } 

    public Product GetById(int id) { 
     return DB.GetByKey(id); 
    } 
} 

등등. 모든 데이터 액세스 방법을 한 곳에서 통합 할 수 있기 때문에 좋습니다. Sprocs를 가지고 있다면 DB에서 메소드로 생성됩니다.

시간이 흐른 후에 SubSonicRepository에 직접 Save 메서드를 추가하기 위해 직접 작업 할 것이므로 호출 할 메서드 (추가 또는 업데이트)를 직접 확인하지 않아도됩니다.

0

나는 포함하도록 Classes.tt 파일을 수정 한 :

public partial class <#=tbl.ClassName#>Repository : SubSonicRepository<<#=tbl.ClassName#>> 
    { 
     public <#=tbl.ClassName#>Repository() : base(new <#=DatabaseName#>DB()) { } 
    } 

가까운 오른쪽 상단에

<# foreach(Table tbl in tables){#> 

/// <summary> 

사이 라인의 무리를 삽입 네임 스페이스 선언, 내 파일에 18 행에 삽입 할 수 있습니다.

마지막으로 System.Linq 문 다음 줄에 10 번째 줄에 "using"문을 추가하는 것입니다. 당신은 기본 기능에 액세스 할 수 있지만, 다른 부분 클래스에서 변경 될 수 있습니다 제공하는 저장소를 생성합니다

using System.Linq; 
using SubSonic.Repository; 

: 지금은 같이해야한다.

희망이 있습니다.

관련 문제