2009-04-16 5 views
1

私はSubSonic(すべてのフレーバー)を使い慣れていますが、Linqを使いたいので3.0から始めることもできると思っていました。サブソニック3.0 DBコンテキストクラスを作成するにはどうすればよいですか?

私はアルファのダウンロード.zipを試みましたが、これはかなり古いと思われ、テーブルクラス名を特定しなかったので、最新のトランクSVNバージョン(rev62)から実行しています。 、当然のことながら

public partial class DB : IQuerySurface 
{ 
    static DB _db; 

    public DB() { 
     _db = new DB(); 
    } 

    public static DB CreateDB() 
    { 
     if (_db == null) 
     { 
      _db = new DB(); 
      _db.Init(); 
     } 
     return _db; 
    } 
    ... etc 

私はSubSonic.Templatesから、「シンプル」テンプレートを実行しましたが、私のデータベースに対してシンプル\、すべては大丈夫そうですが、テンプレートは、このような開始を作成するDBのコンテキストクラス私がDB.CreateDBを呼び出すと、ctorが無限に繰り返して、スタックオーバーフローですべてがクラッシュします。

私は実際にctorを全く理解していません。そこにあるはずはありませんが、「シンプル」と「アドバンスド」の両方のテンプレートが同様のものを作り出しています。想像して、何とかこれを検証しています。

明らかに私はここに間違った終わりを持っています - ぼんやりとした明白な点は私が逃したのですか?

更新:シンプルで高度なテンプレートは類似しておらず、先進のテンプレートはこの問題がありません。助けてくれてありがとう。

別の更新:それはこのようになりますはSVN R66でシンプルなテンプレートで固定されている

+0

これはタイプミスのようです。 public DB(){} –

+0

"private DB(){}"にする必要があります。私はちょうどテンプレートを変更して移動します。 –

答えて

2

はバグでSVNから最新のビットを持っている場合は知らないが、数日前から私のバージョンうまく動作しているようです。私は、テンプレートの高度なバージョンを使用...など...

public partial class DB : IQuerySurface 
{ 
    BatchQuery _batch = null; 

    public IDataProvider DataProvider; 
    public DbQueryProvider provider; 

    private IDatabaseSchema _schema; 
    public IDatabaseSchema Schema 
    { 
     get 
     { 
      return _schema; 
     } 
    } 

    public DB() 
    { 
     DataProvider = ProviderFactory.GetProvider("Northwind"); 
     Init(); 

    } 

    public DB(string instanceName, string connectStr) 
    { 
     SubSonic.DataProviders.ConnectionStringProvider.Instance.AddLocalConnectionString(
       instanceName, connectStr, "System.Data.SqlClient"); 

     DataProvider = ProviderFactory.GetProvider(instanceName); 

     Init(); 

    } 

:ここに私のDBクラスはで始まるものです。

public DB() 
    { 
     DataProvider = ProviderFactory.GetProvider("Northwind"); 
     Init(); 

    } 

また、接続文字列を受け入れるオーバーロードがあります:私は、T4テンプレートを好む

+0

これはありがとう - 私は単純なテンプレートが壊れていると思う - 高度なものは良いようだ。 –

1

は、ここに提供ctorのです。これは私のために非常によく働いています、私はlinqのサポートを使用しています、そしてそれは素晴らしいの完全です。

+0

ありがとうございます - t4テンプレートの2つのセットがあり、私は間違ったテンプレートを使用していたと思います。 –

関連する問題