我有ValidationAttribute像:
public class Username : ValidationAttribute
{
public override bool IsValid(object value)
{
if (value == null)
return false;
return RegExp.Validate(RegExpLib.Username,value.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
..并使用它像这样:
public class AccountSignIn
{
[Username(ErrorMessageResourceName ="txtUsername",ErrorMessageResourceType=typeof(SignIn))]
public string Username { get; set; }
public string Password { get; set; }
public bool RememberMe { get; set; }
public string ReturnUrl { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
SignIn是App_GlobalResources的资源文件,"txtUsername" - 是资源文件中的字符串名称.
问题:未显示错误消息.
问题:如果网站上的语言很少,如何设置错误消息.
另一个信息:
我可以SignIn.txtUsername从Views或项目中的任何文件访问.来自控制器
ModelState.AddModelError("Username", Resources.SignIn.txtUsername);
Run Code Online (Sandbox Code Playgroud)
工作正常..我可以在ValidationAttribute内部分配ErrorMessage,但在第二次验证后得到错误尝试...如果我这样检查 -
if(ErrorMessage != Resources.SignIn.txtUsername)
ErrorMessage = Resources.SignIn.txtUsername;
Run Code Online (Sandbox Code Playgroud)
切换到另一种语言后出错 - …
我在Linq to NHibernate查询中通过多个字段进行排序时遇到问题.有没有人知道什么可能是错的或者是否有解决方法?
码:
IQueryable<AgendaItem> items = _agendaRepository.GetAgendaItems(location)
.Where(item => item.Minutes.Contains(query) || item.Description.Contains(query));
int total = items.Count();
var results = items
.OrderBy(item => item.Agenda.Date)
.ThenBy(item => item.OutcomeType)
.ThenBy(item => item.OutcomeNumber)
.Skip((page - 1)*pageSize)
.Take(pageSize)
.ToArray();
return new SearchResult(query, total, results);
Run Code Online (Sandbox Code Playgroud)
我尝试用多个OrderBy调用替换ThenBy.结果相同.如果我注释掉两个ThenBy调用,该方法效果很好.
我收到的错误:
[SqlException (0x80131904): Invalid column name '__hibernate_sort_expr_0____hibernate_sort_expr_1__'.
Invalid column name '__hibernate_sort_expr_0____hibernate_sort_expr_1__'.]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +1948826
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +4844747
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2392
[ADOException: could not execute … 我正在获取异常映射私有属性.这是情况:我在Entity.cs中有这个:privat int m_Inactive;
在EntityMap.cs我有:
Map(x => Reveal.Property<Entity>("m_Inactive")).ColumnName.("INACTIVE");
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
System.Reflection.TargetInvocationException: Exception has been thrown
by
the target of an invocation. ---> System.ArgumentException: Not a member access
Run Code Online (Sandbox Code Playgroud)
可能是什么原因?
谢谢.
这就是我如何获得Hibernate Session并创建查询.
HSession.getSession().createQuery("query here").executeUpdate();
Run Code Online (Sandbox Code Playgroud)
和
Critaria cr=HSession.getSession().createCritaria(..).. ;
Run Code Online (Sandbox Code Playgroud)
HSession是我的Session工厂所在的位置,getSession()方法返回一个新会话
(getSessionFactory().openSession();)
Run Code Online (Sandbox Code Playgroud)
我想知道是否
cr.list();会话还活着吗? 创建会话为
Session s = HSession.getSession();
s.createCriteria ...
是使用会话并使用它关闭它的方法s.close();吗?
我有这种情况:
public namespace ANamespace
{
public abstract class ABase:IABase
{
//properties
}
public abstract class A : ABase
{
//properties
}
public class A1 : A
{
//properties
}
public class A2 : A
{
//properties
}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用此映射代码:
AutoMap
.AssemblyOf<ABase>()
.Where(e => e.Namespace == "ANamespace")
.IncludeBase<A>().IgnoreBase<ABase>();
Run Code Online (Sandbox Code Playgroud)
仅创建一个表(具有ABase和A属性).如果我删除IncludeBase(),则创建A1和A2(包含所有属性).
AutoMap
.AssemblyOf<ABase>()
.Where(e => e.Namespace == "ANamespace")
.IgnoreBase<ABase>();
Run Code Online (Sandbox Code Playgroud)
如何编写映射以在我的数据库中为类A(具有所有A和ABase属性),A1和A2(具有特定属性)而不是ABase类创建表?
我有entity A,它有多对多的关系entity B.
所以表格布局是: A, AB(mapping table), B
获取实体A的对象:我调用A.getById()哪个getHibernateTemplate().get(A.class, id) 使用spring和hibernate.
问题是,有时随之而来的代码将只需要一个,有时随后的代码将继续访问相关的B的,所以我们想使用延迟加载在某些情况下,并渴望在其他一些情况下.但问题是所有数据库访问都是通过同一个单独提供的ADao.java,因此只有一种方法getById().
我应该创建两个版本的方法getById()吗?
但是对于更复杂的情况,如果A也通过多对多连接到C,那么可能存在lazy-loading-C和eager-loading-C的getById()变体,因此所需的变体快速呈指数增长.
你对这个选择有什么看法?
谢谢
我有一个使用 Shibboleth 进行身份验证的产品。
当用户在网站上发起注销时
对于下面显示的配置,我使用此处给出的 Shibboleth 服务提供商 https://www.testshib.org/install.html#SP。它被配置为使用 testshib.org IdP 详细信息可以在此处阅读

我相信 IdP 不会删除其会话 cookie 并在步骤 3 中重新登录用户。
有关 IdP Cookie 的更多信息:
此wiki 源指出 IdP 使用两个 cookie,_idp_authn_lc_key这些 cookie 在身份验证后将被删除。第二个是会话 cookie '_idp_session',它指出:
用户通过身份验证后,他们将与 IdP 建立长期会话,该会话由名为 _idp_session 的 cookie 进行跟踪。此 cookie 仅包含识别用户 IdP 会话所需的信息。该 cookie 被创建为“会话”cookie,并且当浏览器选择删除此类 cookie 时(通常是在浏览器关闭时),该 cookie 将被删除。
我的问题是
我有一个IQueryableNHibernate,我想有一个linq查询来总结一个特定的列,但是,当我的Where方法条件给我一个空的结果我不想得到一个异常,但我不想打一个查询获取所有记录并在内存之后总结,我想要像coalesesql命令一样的样本:
// I get exception when its empty
var query = MyQueryable()
.Where(x => x.IsDone)
.Select(x => x.Value)
.Sum();
Run Code Online (Sandbox Code Playgroud)
我必须做这样的事情:
// I get 0, its ok, but ToList(), list all records on memory,
// I just want to get a single value
var query = MyQueryable()
.Where(x => x.IsDone)
.Select(x => x.Value)
.ToList()
.Sum();
Run Code Online (Sandbox Code Playgroud)
有什么办法吗?
谢谢.
hibernate ×3
nhibernate ×3
c# ×2
linq ×2
asp.net-mvc ×1
automapping ×1
fluent ×1
inheritance ×1
iqueryable ×1
java ×1
nservicebus ×1
shibboleth ×1
sum ×1