我正在使用这段代码(简化)来测试一些异常和错误处理:
// All the objects in the collection already exist in the database
// so NHibernate should throw an Exception because of a PK constraint
// violation
foreach (var existingEntity in existingEntities)
{
// Implementation calls Session.CreateTransaction(),
// but the
一个项目参与者可能是许多组的成员,一个组可能有许多项目参与者。
我发现,当我创建2个ProjectParticipants (此工作),然后使用3新组填充Project.Groups集合并将参与者添加到相关组(A组有参与者1,B组有参与者2,C组有参与者1和2)时,我会遇到一个"StaleStateException批处理更新从update返回意外行计数;实际行计数: 0,预期: 3“。我希望nHibernate插入新的组,但是它正在运行一个更新查询,并且不知道它们不存在。它并没有把参与者分配给小组
以下是映射:
//ProjectMap: A Project..
Id
我正在努力解决一个我从未在Hibernate中遇到的NHibernate问题。我有一个带有惰性加载集合的对象。我在一个会话中加载对象,然后将它重新附加到另一个会话中,并初始化延迟加载的集合。但是,我一直得到一个‘集合与会话无关’错误。要合并的代码非常简单:
/// <summary>
/// Loads all the lazy collections in the sample types
/// </summary>
/// <param name="sampleTypes"></param>
我正在努力学习NHibernate,我无意中遇到了一个合并的数据库设计/“学习NHibernate如何工作”的问题。
在我的例子中,我试图设计一个包含行和列的简单表,其中每一行都有一个“描述”,然后有一个“列值”列表(排序),其中包含数据和排序信息。在代码中,它看起来如下所示:
public class Row
{
public virtual int ID { get; set; }
public virtual string Description { get; set; }
public virtual ICollection<Column> Colu
我正在使用使用字符串作为主键的brownfield数据库。使用Fluent NHibernate和Sqlite (用于单元测试的内存提供程序)和 Server 2005。
我有以下实体:
public class Entity
{
public virtual DateTime TimeStamp { get; set; }
public virtual string Name { get; set; }
}
通过这种映射:
public class EntityMap : ClassMap<Entity>
{
public EntityMap()
我在nHibernate v4.0.4.4000上运行了一个应用程序--它正在三个独立的have服务器上运行。对于id生成,我使用默认的HiLo实现(跨表的唯一id)。
有时,当使用以下堆栈跟踪保存新实体时,它会生成重复的Id:
at NHibernate.AdoNet.SqlClientBatchingBatcher.DoExecuteBatch(IDbCommand ps)
at NHibernate.AdoNet.AbstractBatcher.ExecuteBatchWithTiming(IDbCommand ps)
at NHibernate.AdoNet.AbstractBatch
在尝试在NHibernate中创建双向一对一映射时,我发现无法以递归方式获得对象的引用。
例如:假设我在Person和Address之间有一对一的关系。
然后,在执行以下代码后,
class Person
{
... ...
public Address Address { get;set; }
}
class Address
{
... ...
public Person Person {get;set;}
}
Repository<Person> rep = new Repository<Person>();
Person p =
在执行以下操作时,我希望找到使用以下三种方式从数据库获取数据的不同之处:
public T GetById(int id) {
using (var db = Database.Session) {
using (var t = db.BeginTransaction()) {
try {
return db.Get<T>(id);
}
catch (Exception) {
if (!t.WasCommitted) {
我已经上传了一个要点,其中包含一个工作示例、映射文件和显示该问题的完整调试日志-
下面是我得到的实际异常:
ERR: NHibernate.PropertyValueException: Error dehydrating property value for NHibernate.ConsoleTest.IOrderLine.Product ---> NHibernate.HibernateException: Unable to resolve property: Id
at NHibernate.Tuple.Entity.EntityMetamodel.GetPropertyIn
我有一些代码会抛出这个错误,并且我已经在功能本身中声明了它。
IF @Functionality='UserDetails'
BEGIN
SELECT TOP 10 ROW_NUMBER() OVER(ORDER BY USR.USERBADGENO ASC) AS SNO,
USR.USERBADGENO,
USR.FIRSTNAME + ' ' + U
在我把我的电脑踢到下周之前...
我已经检查了关于这个问题的所有其他问题,但没有一个问题有解决方案。我已经剥离了这段代码,但它仍然不能工作。
保存对象时出现此错误: NHibernate.AssertionFailure: null标识符
这是我的映射文件:
public class OrderMap : BaseMap<Order>
{
public SalesOrderMap()
{
Id(x => x.Id).Column("OrderId");
}
}
这是实体:
public class Order
{
当使用NHibernate中的公式定义计算的属性时,当公式根据查询限制而改变其结果时,特别是在查询缓存方面,会产生什么影响?
更具体地说,考虑以下简单的C#类:
public class Entity
{
public Entity() { }
public virtual int Id { get; protected set; }
public virtual string Key { get; protected set; }
public virtual string Value { get; protected set; }
public vi
当我试图使用NHibernate来持久化两个对象之间有多个关联的新实例时,会出现以下错误:
NHibernate.Exceptions.GenericADOException: could not insert: [MyProject.BusinessEntities.Client][SQL: INSERT INTO dbo.Client (Version, CurrentEvent_ClientEvent_Id, EntityType, Id) VALUES (?, ?, 'MyProject.BusinessEntities.Client', ?)] ---> S
我正在使用Fluent NHibernate自动映射来测试NHibernate (版本2.1.0.4000)。
我的实体测试集使用默认的整数ID可以很好地保持
我现在正在尝试对实体使用Guid ID。不幸的是,将Id属性更改为Guid似乎会阻止NHibernate插入对象。
下面是实体类:
public class User
{
public virtual int Id { get; private set; }
public virtual string FirstName { get; set; }
public virtual string LastName {
我得到了这个异常(底部是完全异常):
NHibernate.PropertyValueException was unhandled by user code
Message="not-null property references a null or transient
valueClearwave.Models.Encounters.Insurance.Patient"
Source="NHibernate"
EntityName="Clearwave.Models.Encounters.Insurance"
PropertyNam
,我目前正在做一个列车模拟项目,我在delete track <ID>命令上遇到了一些问题。
她是命令的execute()方法:
public void execute(List<String> args) throws BadSyntaxException {
if (args.size() != 1) { throw new IllegalArgumentException("invalid number of
arguments."); }
int trackId = Integer.parseInt(args.get