English 中文(简体)
我该如何创建亚音速3.0 DB上下文类?
原标题:
  • 时间:2009-04-16 22:07:13
  •  标签:

我新亚音速(所有口味的),但我认为不妨从3.0开始,因为我想用Linq,我得到的印象3.0不是远离释放。

我试着alpha . zip下载,但这似乎很老,没有使单一化表类的名字,现在我从最新的树干SVN版本(rev62)。

我已经运行简单的模板,从亚音速。TemplatesSimple反对我的数据库和一切都好,但是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,男星是递归地和崩溃所有堆栈溢出。

我不真正理解男星——它看起来不应该有,但简单的和先进的模板创建类似,有一个巨大无比的测试套件,我想象是验证。

显然我不公平的待遇,我错过了什么极其明显的一点?

<强>更新:< /强>简单的和先进的模板不相似,和先进的不存在这个问题。谢谢你的帮助。

<强>另一个更新:< /强>看起来这是固定在SVN r66简单的模板

最佳回答

不知道如果你有最新的碎片从SVN一个错误,但我的版本从几天前似乎工作好。这就是我的DB类开始:

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();

    }

…等等……

我使用了先进的版本的模板。

问题回答

我更喜欢这里的t4模板,是:提供的男星

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

    }

还有一个过载,接受一个连接字符串。这是工作很好对我来说,我使用linq支持它棒极了。





相关问题
热门标签