我们走了...... 我有一个表(不幸的是我不能改变),如:
我有两个字段的数据类: startDateTime = date + startTime endDateTime = date + endTime
Map(x => x.EndDateTime)
.Columns.Clear()
.Columns.Add("date", "endTime")
.CustomType<MyCustomType>();
Map(x => x.StartDateTime)
.Columns.Clear()
.Columns.Add("date", "startTime")
.CustomType<MyCustomType>();
MyCustomType是一个实现IUserType接口的类。这似乎有效,但它只适用于从数据库中读取数据。保存或更新NHibernate时,将列“日期”放两次,并且无法提交查询。
我的问题是:有什么方法可以解决这个问题吗?我希望这两个字段都不是只读的。 (将其中一个设置为只读有帮助,但它不是满足我的解决方案。)
答案 0 :(得分:0)
好的,我找到了一个解决方案......它不是很优雅,但这个数据库也不优雅:)
所以在我的BaseController中,它处理所有内容,如添加,保存,删除和更新,我做了一些保存这种特殊类型的特殊处理:
public virtual T Save<T>(T entity)
{
try
{
if (entity.GetType().Equals(typeof(SpecialType)))
{
return SaveSpecialType<T>(entity);
}
ITransaction transaction = session.BeginTransaction();
session.Save(entity);
transaction.Commit();
return entity;
}
catch (Exception ex)
{
if (logError.IsErrorEnabled)
logError.Error(ex.Message + " \n " + ex.InnerException, ex);
throw;
}
}
此SaveSpecialType方法执行将该杂乱类型插入数据库的本机sql查询
答案 1 :(得分:0)
夫妻问题。如果两个不同的属性具有不同的值,即使它们应该转到相同的基础表字段,您会得到什么样的错误以及您想要做什么?