【发布时间】:2016-02-25 13:45:50
【问题描述】:
我有一个 C#.net 应用程序,我在其中写入一个 sql server 数据库。 SQL Server 表都有公共记录管理列(DateCreated、DateLastUpdated、CreatedUserId 等...),我希望将这些字段的填充抽象为 InsertFilter 和 UpdateFilter。
这是 AppHost 的 Configure 方法的简化版本..
public override void Configure(Container container)
{
ICacheClient CacheClient = new MemoryCacheClient();
container.Register(CacheClient);
var connectionString = ConfigurationManager.ConnectionStrings["mydb"].ConnectionString;
container.Register<IDbConnectionFactory>(c => new OrmLiteConnectionFactory(connectionString, SqlServerDialect.Provider));
container.Register<IUserAuthRepository>(c => new OrmLiteAuthRepository(c.Resolve<IDbConnectionFactory>()));
var authRepo = (OrmLiteAuthRepository)container.Resolve<IUserAuthRepository>();
OrmLiteConfig.InsertFilter = (dbCmd, row) =>
{
var userSession = SessionFeature.GetOrCreateSession<AuthUserSession>(CacheClient);
var recordManagementRow = row as IRecordManagement;
if (recordManagementRow != null)
{
recordManagementRow.DateCreated = recordManagementRow.DateLastUpdated = DateTime.UtcNow;
if (userSession != null)
recordManagementRow.CreatedUserId = recordManagementRow.LastUpdatedUserId = userSession.Id.ToInt();
}
};
}
执行时,OrmLiteConfig.InsertFilter 委托的第一行出现以下异常。有没有人对如何检索当前用户会话 ID 以插入数据库有更好的想法?
ServiceStack.dll 中出现“System.NotImplementedException”类型的异常,但未在用户代码中处理
补充信息:此 AppHost 不支持通过 Singleton 访问当前请求
【问题讨论】:
标签: c# servicestack ormlite-servicestack