OrmLite动态数据库架构

时间:2014-06-17 12:21:28

标签: servicestack ormlite-servicestack

是否可以在运行时使用OrmLite定义动态模式。例如,当通过OrmLite读取对象时,可以定义从哪个模式读取它。

这将通过一个例子得到最好的展示。假设我在MSSQL 2008 R2数据库中有3个用户表:

Schema1.user Schema2.User Schema3.User

我有一个对象用户定义了一些属性。我选择像这样的数据“db.Select();”。问题是我还没有定义从哪个架构读取用户数据。我希望能够在运行时执行此操作,但我似乎无法找到属性方法来执行此操作。

使用C#,. NET 4.5 fw,MSSQL 2008 R2数据库

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以通过修改为每种类型维护的OrmLite元数据来实现此目的,即:

var modelDef = SqlServerOrmLiteDialectProvider.GetModelDefinition(typeof(Poco));
var existingSchema = modelDef.Schema;
modelDef.Schema = "Schema2";

// All queries on Poco now use `Schema2`

modelDef.Schema = existingSchema; //Retain existing behavior

答案 1 :(得分:0)

此功能在当前版本中变得更加容易。您可以对类进行数据注释以设置here中所说明的。

示例:

[Schema("test")]
public class Foo 
{
}