ServiceStack.Ormlite允许我们使用Schema属性来装饰数据库表类,以表示它们属于数据库中的哪个模式。
这对所有表格都很有用,除了看起来是由Auth功能创建的表格。是否可以指定Auth表应属于哪个模式?我宁愿不使用自定义类纯粹用Schema属性来装饰。
如果没有,我想我应该在某处请求更改?
编辑1 - 遵循mythz的建议
我在初始化构造函数中添加了该属性..
public class AuthenticationInitialisation : AppInitialisation
{
private readonly IAppSettings _appSettings;
public AuthenticationInitialisation(IAppSettings appSettings)
{
_appSettings = appSettings;
typeof(UserAuth).AddAttributes(new SchemaAttribute("Admin"));
typeof(UserAuthDetails).AddAttributes(new SchemaAttribute("Admin"));
typeof(UserAuthRole).AddAttributes(new SchemaAttribute("Admin"));
}...
我已从SQL用户中删除了默认架构,并在DropAndRecreateTables()上获得了异常......
var authRepo = (OrmLiteAuthRepository)appHost.TryResolve<IUserAuthRepository>();
if (_appSettings.Get("RecreateAuthTables", false))
authRepo.DropAndReCreateTables(); //Drop and re-create all Auth and registration tables
else...
异常读取
不能删除“UserAuth”表,因为它不存在或您没有权限。
由SQL事件探查器验证,显示以下内容已传递到SQL Server
DROP TABLE "UserAuth"
编辑2 - 更改为MyGet预发布ServiceStack版本后
我现在收到以下错误..
ServiceStack.dll中出现'System.MissingMethodException'类型的异常,但未在用户代码中处理
其他信息:未找到方法:'Void ServiceStack.MetadataTypesConfig..ctor(System.String,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,System.String,Boolean,Boolean,Boolean,Boolean,Boolean,System .Nullable`1)”
Stack Trace ..
在ServiceStack.NativeTypesFeature..ctor() at ServiceStack.ServiceStackHost..ctor(String serviceName,Assembly [] assembliesWithServices) at ServiceStack.Host.HttpListener.HttpListenerBase..ctor(String serviceName,Assembly [] assembliesWithServices) at ServiceStack.AppHostHttpListenerBase..ctor(String serviceName,Assembly [] assembliesWithServices) 在MyProduct.AppHost..ctor(IEnumerable`1 initialisations)中的d:\ dev \ App_Code \ AppHost.cs:第14行 在MyProduct.Global.Application_Start(Object sender,EventArgs e)的d:\ dev \ Global.asax.cs:第29行
在我的AppHost构造函数上..
public AppHost(IEnumerable<IAppInitialisation> initialisations) : base("RESTful Web API", typeof(SystemsService).Assembly)
{
if (initialisations == null)
{
_initialisations = new IAppInitialisation[0];
}
else
{
_initialisations = initialisations.ToArray();
}
}
如果使用模式进入下一个ServiceStack版本,那么我将暂时等待并设置SQL用户的默认模式。
答案 0 :(得分:0)
尝试动态地将schema属性添加到UserAuth表,即:
typeof(UserAuth)
.AddAttributes(new SchemaAttribute("MySchema"));
typeof(UserAuthDetails)
.AddAttributes(new SchemaAttribute("MySchema"));