- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在插入一行时捕获违反 UNIQUE KEY 约束的情况,但不知道如何实现。
NHibernate 配置:
public NHibernate.Cfg.Configuration GetConfiguration()
{
string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionSqlServer"].ConnectionString;
var cfg = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008
.ConnectionString(connectionString)
.ShowSql()
.Driver<NHibernate.Driver.Sql2008ClientDriver>()
.Provider<NHibernate.Connection.DriverConnectionProvider>()
.Dialect<NHibernate.Dialect.MsSql2008Dialect>())
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<EntityBase>().Conventions.Add(DynamicUpdate.AlwaysTrue()))
.ExposeConfiguration(config =>
{
config.SetInterceptor(new SqlStatementInterceptor());
config.SetProperty(Environment.SqlExceptionConverter,
typeof(MsSqlExceptionConverter).AssemblyQualifiedName);
config.Properties[Environment.CurrentSessionContextClass] = "web";
var schemaUpdate = new SchemaUpdate(config);
schemaUpdate.Execute(false, true);
})
.BuildConfiguration();
return cfg;
}
ISQLExceptionConverter 实现:
public class MsSqlExceptionConverter : ISQLExceptionConverter
{
public Exception Convert(AdoExceptionContextInfo exInfo)
{
var sqle = ADOExceptionHelper.ExtractDbException(exInfo.SqlException) as SqlException;
if (sqle != null)
{
switch (sqle.Number)
{
case 547:
return new ConstraintViolationException(exInfo.Message,
sqle.InnerException, exInfo.Sql, null);
case 208:
return new SQLGrammarException(exInfo.Message,
sqle.InnerException, exInfo.Sql);
case 3960:
return new StaleObjectStateException(exInfo.EntityName, exInfo.EntityId);
}
}
return SQLStateConverter.HandledNonSpecificException(exInfo.SqlException,
exInfo.Message, exInfo.Sql);
}
}
try-catch 语句:
public void InsertCultures()
{
using (var uow = _unitOfWorkFactory.Create())
{
var CULTURE_DEFAULTS = new List<Culture>()
{
new Culture() {Symbol = "ro-RO", Language = "Romana"},
new Culture() {Symbol = "ru-RU", Language = "Rusa"},
new Culture() {Symbol = "en-US", Language = "Engleza"}
};
foreach (var culture in CULTURE_DEFAULTS)
{
try
{
_cultureRepository.Create(culture);
}
catch (ConstraintViolationException e)
{
}
}
/// Other stuff
}
}
如果有人有 Eagle-Eye,请分享 :) 谢谢!
最佳答案
这是我用于捕获唯一 key 违规的非本地化版本,希望对您有所帮助。我抛出一个调用代码可以捕获和处理的自定义 UniqueKeyException。您的 Fluent 配置代码在我看来是正确的。
public class SqlServerExceptionConverter : ISQLExceptionConverter
{
public Exception Convert(AdoExceptionContextInfo adoExceptionContextInfo)
{
var sqlException = adoExceptionContextInfo.SqlException as SqlException;
if (sqlException != null)
{
// 2601 is unique key, 2627 is unique index; same thing:
// http://blog.sqlauthority.com/2007/04/26/sql-server-difference-between-unique-index-vs-unique-constraint/
if (sqlException.Number == 2601 || sqlException.Number == 2627)
{
return new UniqueKeyException(sqlException.Message, sqlException);
}
}
return adoExceptionContextInfo.SqlException;
}
}
关于c# - 流利的 NHibernate,实现 ISQLExceptionConverter 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19010082/
我正在尝试将fluentd与elasticsearch连接起来,并且在启动td-agent服务时遇到此错误。 td-agent.log: 无法与Elasticsearch通信,重置连接并重试。连接被拒
所以我有一个案例,布局已经变得更加复杂。有一些常见的东西,比如 @section styleIncludes{ ... } ,然后是其他部分,这些部分定义了每个页面可以选择(但几乎总是)指定的各种内容
我刚刚看到一个巨大的 Java 正则表达式,它让我对一般正则表达式的可维护性有所思考。我相信大多数人——除了一些糟糕的 perl 贩子——都会同意正则表达式很难维护。 我在考虑如何解决这种情况。到目前
我有一个 12 秒长的 audio.mp3 文件video.mp4 的长度为 60 秒。 我需要在视频的第 40 秒插入audio.mp3。 如何使用 Node-Fluent-ffmpeg 做到这一点
我正在使用 NHibernate + Fluent 来处理我的应用程序中的数据库。到目前为止,我一直在使用 SessionSource 来创建我的 ISession 对象。我现在对来自 NHibern
我在 Java 控制台应用程序中使用 Apache HttpClient 4.5(具有流畅的界面)。我注意到,它的默认超时值似乎是无限的,但我必须为我发送的请求使用非无限的超时值。我想对所有请求使用相
这是我的路线: router.get("answers","delete", Int.parameter) { req -> Future in let answerID = try
我有随机“ session 已关闭!” Autofac 和 Fluent nHibernate 的以下配置错误: 全局.asax.cs: builder.Register(x => new NHibe
我是一名优秀的程序员,十分优秀!