目前我们正在从 Entityspaces(Tiraggo) 迁移到 Servicestack Ormlite。
其中一点就是打开和关闭DBConnection的方式。
我对这种比较表示歉意,但它对这个问题很有用。在 Tiraggo 中,在我的 wep 应用程序中,在 global.asax.cs 中我放置了以下内容:
protected void Application_Start(object sender, EventArgs e)
{
Tiraggo.Interfaces.tgProviderFactory.Factory = new Tiraggo.Loader.tgDataProviderFactory();
}
在 web.config 中存在 Tiraggo 部分、连接字符串,ORM 完成其余的工作。
在使用类的过程中我们只需这样做:
User user = new User(); user.Name="some"; user.Comment = "some"; user.Save();
我不打开、关闭 DBConnection。这对于程序员来说是透明的。只需创建实例类并使用它们即可。
我定义了一个类、一个存储库,仅此而已。没有数据库定义或交互。一切都发生在 Webforms 应用程序中,数据层位于同一应用程序内。
当我们迁移到 Servicestack ORMLite 时,我看到 DBConnection 的打开也在 globlal.asax.cs 内部,但它引用的是服务,而不是类或存储库。
public class AppHost : AppHostBase
{
public AppHost() : base("Hello ServiceStack", typeof(HelloService).Assembly) {}
public override void Configure(Container container) {}
}
所以我的第一个问题是:如果我没有服务(HelloService),我只有类或存储库,我该如何使用它。所以我不能将这种技术用于我的数据库的 DBConnection。
我还看到访问数据库,我需要一个开放的连接。我尝试这样做:
using (var Db = DbFactory.Conn.OpenDbConnection())
{
return Db.SingleById<Anio>(id);
}
后来,我找到了一个像我正在寻找的样本,Pluralsight 视频“.NET Micro ORMs”Steve Mihcelotti,他只是打开连接,但从未关闭它,也从未使用“using”语法。
所以我的两个问题是:
1)有没有一种方法可以像所有使用servicestack ormlite的示例一样打开DbFactory(dbConnection),但不使用服务(我不使用服务,我想使用Ormlite,但只使用类和存储库)
2)有没有一种方法可以在每次访问类或存储库时连接到数据库,而不使用“using”语法,或者
3)唯一的方法是Pluralsight视频中显示的方法,即。打开连接在每个方法中抛出 using 语法(前往类)
我希望我说清楚了。