私は(すべてのフレーバーの)SubSonic を初めて使用しますが、Linq を使用したいので 3.0 から始めたほうがよいと考えました.3.0 はリリースからそれほど遠くないという印象を受けました.
アルファ ダウンロード .zip を試してみましたが、かなり古いようで、テーブル クラス名を単一化していないため、現在は最新のトランク SVN バージョン (rev62) から実行しています。
SubSonic.Templates\Simple からデータベースに対して「単純な」テンプレートを実行しましたが、すべて問題ないように見えますが、テンプレートが作成する DB コンテキスト クラスは次のように始まります。
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
当然のことながら、DB.CreateDB を呼び出すと、ctor は際限なく再帰し、スタック オーバーフローですべてをクラッシュさせます。
私はctorをまったく理解していません-そこにあるはずのようには見えませんが、「単純な」テンプレートと「高度な」テンプレートの両方が同様のものを作成し、これを検証していると私が想像する巨大なテストスイートがあります何とかして。
明らかに、私はここでスティックの間違った端を持っています.
更新:シンプルなテンプレートと高度なテンプレートは類似しておらず、高度なテンプレートにはこの問題はありません。助けてくれてありがとう。
別の更新:これは SVN r66 の単純なテンプレートで修正されているようです