我知道这个问题是重复的。
但是,没有人能够简短地回答正确的问题。
当我试图使用guid从表中提供记录时,我收到了Nhibernate错误“No row with given identifer found error”。
我正在使用Nhibernate加载函数加载具有唯一标识符(GUID)的记录,但如果该记录不存在,则会出现异常。
我是否在hbm.xml文件中缺少某些属性?来自
请注意,如果没有匹配的数据库行,Load()将引发不可恢复的异常
如果要查询特定记录且没有异常,请使用实际查询或Get
这是一只虫子?
使用NHibernate.Expression.Example.Create(userExample)如果我的类在属性“Type”上使用Int32,那么一切都可以正常工作
public class User:Person
{
public virtual String NickName { get; set; }
public virtual String Password { get; set; }
public virtual Int32 Type
我在一个拥有Oracle 10g数据库的项目中使用Fluent NHibernate。我还使用SQLite和从映射生成的模式进行测试。我遇到的问题是,由于我的表上的主键是由Oracle序列生成的,为了使我的Add方法正常工作,我必须将.GeneratedBy.Sequence({Sequence name})添加到每个映射的Id字段中,以便映射看起来像这样:
public CustomerMap()
{
Id(x => x.Id)
.Column("Cust_Id")
我很难理解我应该如何与NH建立有序的儿童关系
在代码世界中,我有:
class Parent
{
public Guid Id;
public IList<Child> Children;
}
class Child
{
public Guid Id;
public Parent Parent;
}
当我插入一个父对象,其中包含一个子对象时,我会看到以下SQL:
Insert into Child (id, Parent_id) values (@
所以我有两个实体:
Article
Category
我有一个表,它将articleID和categoryID关联起来:
articles_categories
-articleID
-categoryID
我正在使用xml进行映射,我应该在这里做什么
我希望能够查询给定类别中的所有文章。使用多对多映射:
<class name="Article">
<set name="Categories" table="articles_categories">
在我的MSSQL服务器中,我有一个名为AllFavorite的SQL视图。为了将数据加载到我的DTO类中,我在hbm.xml文件中有以下内容
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="Domain.Model.Entities" assembly="Domain.Model">
<
hibernate文档说明了以下内容:
配置参数hibernate.connection.release\u mode用于指定要使用的发布模式。可能的值:
*自动(默认)-相当于当前版本中的after_事务。更改此默认行为很少是一个好主意,因为此设置的值导致的故障往往表示用户代码中存在错误和/或无效假设。
*on_close-表示使用ConnectionReleaseMode.OnClose。此设置是为了向后兼容而保留的,但不鼓励使用它
我创建了一个集成测试,它通过同时打开两个会话并操作同一个实
我在PreSaveEventListener中使用NHibernate OnPreInsert和OnPreUpdate事件来设置实体的CreatedDate和ModifiedDate。问题是,有两个实体在我第一次创建它们时都会触发事件这会导致一个问题,因为OnPreInsert事件后不会保存实体状态,因此OnPreUpdate事件会在一个全新的实体状态上运行,并且my CreatedDate永远不会设置(默认值为01/01/0001)。
起初,我认为这是因为我的代码在事务结束前发起了两个Save
我们有一个通过后台进程更新的数据库。我们使用NHibernate查询数据以显示在web UI上,因此不需要更改跟踪或延迟加载
如果我们将所有映射标记为mutable=“false”,这与使用无状态会话相同吗?不,不一样。事实上,它与此完全无关(即,您可以在无状态会话中修改实体)
无状态会话不跟踪实体,当您不需要有状态会话提供的功能时,这会导致性能大幅提高(内存使用和执行时间)
特别是:
没有延迟加载
没有缓存
没有级联
所有更新必须明确(插入/更新/删除)
但是标记mutable=“false
我正在尝试获取子集合不包含特定类型项的父集合列表。LINQ等价物类似于:
dataset.Where(x => x.Items.FirstOrDefault(y => y.Type.Code == "ABC") == null)
对象模型是父项>子项>类型>代码
如果Parent是我的聚合根,我将如何在NHibernate条件/查询中对此进行建模?这是我的第一次尝试:
var results = session.CreateCriteria<Parent>()
我有一个对象,它包含一个SQL语句的结果属性。如何将SQL语句添加到nHibernate映射文件中
示例对象:
public class Library{
public int BookCount
{
get;
set;
}
}
映射文件示例:
<hibernate-mapping>
<class name="Library" table="Libraries">
<property
我们的应用程序使用NHibernate和ASP.NETMVC,在进行压力测试时会抛出许多NHibernate事务错误。主要类型有:
事务未连接,或已断开连接
行被另一个事务更新或删除,或者未保存的值映射不正确
事务进程ID 177在另一个进程的锁资源上被死锁,并被选为死锁牺牲品。重新运行事务。
有人能帮我确定异常1的原因吗?
我知道我必须处理代码中的其他异常。有人能告诉我哪些资源可以帮助我有效地处理这些错误吗
我们如何管理会话和事务
答:我们正在使用Autofac。对于每个服务器请求,我们创建一
问题:当我尝试将clsSettings的实例插入数据库时,我继续遇到此nhibernate错误:
的getter发生异常
nhDBapi.DB.Tables.clsSettings.UID
请参见下面的类,由于此异常,该类下面的所有方法都不起作用
有趣的是,当所有内容都在一个名为nhDBapi.exe的可执行文件中时,它就可以工作,即使它在dll中,表模式也可以正确创建
当我将完全相同的代码移动到MailServer.exe加载的API_nHibernate.dll中时,它将停止工作
两者之间的
我对Nhibernate和QueryOver技术相当陌生。如果我问的是一些基本的问题,请保持平静;)
我的hbm看起来像这样
<class
name="ElementLogic.Wms.Common.Core.Orderline,Domain"
table="ORDERLINE"
lazy="true"
dynamic-insert="true"
dynamic-update="true"
>
<many-to-one
在我使用ORMs的有限经验中(到目前为止,LLBL Gen Pro和Entity Framework 4),我注意到查询本质上返回所有列的数据。我知道NHibernate是另一种流行的ORM,我不确定这是否适用于它,但我认为它适用
当然,我知道有一些变通办法:
创建SQL视图并在该视图上创建模型和映射
使用存储过程并在返回的结果集上创建模型和映射
我知道坚持某些做法有助于缓解这一问题:
确保在选择数据时合理限制行数
确保表不会过宽(大量列和/或大型数据类型)
下面是我的问题:
>P>以上
我在让NHV与Fluent NHibernate合作时遇到了一些问题。我的单元测试中有一个实体验证失败,结果抛出了一个ADO异常。我已通过以下方式配置NHV:
private static void Init()
{
_SessionFactory = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2005.ConnectionString(connectionSt
我有两个表,一个是UserDetails,另一个是UserRoles。我用下面的方法映射了它们。这个插入操作进行得很顺利,但当我试图从用户对象获取角色列表时,抛出了一个异常。我确定的是,Hibernate生成的SQL在whare子句中具有USERCODE列作为User_id。如何克服这个问题。请帮帮我
用户类别:
public virtual string Code { get; set; }
public virtual string FirstName { get; set; }
嗨,我有上面这样的类,我想在同一个类上为“Creator”属性创建一对一的映射
我该怎么做?试试这个:
public class AdminUser
{
public virtual int Id { get; set; }
public virtual string UserName { get; set; }
public virtual string Password { get; set; }
public virtual bool IsLocked {
大家好,我开始学习NHibernate,现在我正在尝试为NHibernate创建自己的存储库类
我找到了很多关于这个主题的文章。我选择了本教程:
我不太清楚如何处理存储库中的事务
我有一个存储库接口:
public interface IRepository<T> where T : class
{
void Commit();
void RollBack();
void BeginTransaction();
//...
}
公共接口i假设,其中T
我是nHibernate的新手,帮我在基地保存一个对象和他的连接。
我有两张桌子的底座:
个人(idPerson、名字、第二个名字、idService
服务(idService,名称)
餐桌服务有3个位置(黄金、白银、辉煌)
映射:
public class PersonMap:ClassMap<Person>
{
public PersonMap()
{
Id(x => x.id);
我的数据库中有一个名为“GetListingId”的存储过程。它需要三个字符串输入参数:城市,州,电话号码;一个输入长参数:CallId并返回一个输出长参数:ListingId
我正在尝试用代码执行它:
IQuery query = this.appListingRepository.Session.CreateSQLQuery("exec GetListingId @City=:city, @State=:state, @PhoneNumber=:phoneNumber, @CallId=:c
我今天在这里看到了Ayende关于NH碎片的文章。我第一次听说NH支持分片,我找不到任何有用的信息/提示。所以我想知道进展情况,是否稳定?它如何处理事务/acid属性?它是否支持NH支持的所有数据库?
欢迎提供任何信息:)
谢谢我一直在使用NH Shard,我可以说它工作得很好。事实上,互联网上的信息和例子并不多。据我所知,它支持NH的所有数据库。但是它有一些局限性,有些功能没有完全实现
它与Fluent NHibernate API配合使用效果良好。
您可以找到的大多数文档都可以从JavaJB
我们在Fluent NHibernate中映射了一个表,其Id由Hilo序列生成
this.Id(x => x.Id).GeneratedBy.SeqHiLo("seq_hp", "1000");
this.Id(x => x.Id).GeneratedBy.SeqHiLo("seq_hp", "1000")
.Default("next value for seq_hp");
我们现在需要在Id上指定一个默认值(设置为下一个序列值),以使其与
我有一个新对象,其中包含一组新对象,它们位于某个属性上,作为IList。我通过sql profiler看到正在执行的两个insert查询。。一个用于具有新guid id的父级,一个用于子级,但是,引用父级的子级上的外键是空guid。以下是我在父级上的映射:
<id name="BackerId">
<generator class="guid" />
</id>
<property name="Name" />
<property nam
我试图保存一个对象,其中包含一个具有多对多关系的包。
问题是对象已正确保存,但包未正确保存
这是我的地图,谁能告诉我我做错了什么
谢谢
<class name="XManager.Business.Afspraak, XManager.Business" table="Afspraak" lazy="false" mutable="false">
<id name="Id" type="int">
<generator class="identity" />
这是我第一个使用NHibernate的严肃项目,我已经设置了log4net来输出NHibernate生成的sql,但是在运行我的web应用程序之后,我找不到任何日志文件
此web应用程序当前正在我的本地计算机上运行。dispatch目录是IIS中的虚拟目录,指向My Documents/Visual Studio 2008/Projects中的项目文件夹
下面是Web.config的相关部分
<hibernate-configuration xmlns="urn:nhibernate-co
我有一个完整的名字
public class ClaimDetail
{
public virtual int Id { get; set; }
public virtual Claim Claim {get;set;}
public virtual string ServiceDateFrom { get; set; }
public virtual string DateCreated { get; set; }
public virtual Cla
如何通过使用属性装饰属性来忽略属性?基类AttributePropertyConvention似乎没有这种能力,或者可以吗?在IPropertyInstance上找不到任何可设置的内容 这很容易:
public class IgnoreAttributeConvention : AttributePropertyConvention<IgnoreAttribute>
{
protected override void Apply(IgnoreAttribute attribu
我正在尝试使用NHibernate创建单向的一对一关系
示例:订单由客户发出
Customer{ID, Name, Address}
OrderN{ID, Customer, OrderDate}
这里,OrderN.Customer-field用于将Customer.ID存储为FK。这个字段没有任何唯一的约束
(OrderN表的命名是为了避免SQL关键字冲突。)
问题是,在执行此c#代码后,OrderN.Customer-field存储了一个空值
但它应该存储客户的ID。即1
如果我在Ord
我在项目中使用NHibernate,但我不喜欢使用类型化属性从数据库中选择项。
有没有可能把它改为
session.CreateCriteria(typeof(IEntry)).AddOrder(Order.Desc("Alias"))
像这样的事
session.CreateCriteria(typeof(IEntry)).AddOrder(Order.Desc(x=>x.Alias))
谢谢,
亚历山大
我尝试使用NHibernate.Link,但无法使用,因为它没有强名称:(将
我必须准备一个案例,说服管理者使用ORM促进开发。在这种情况下,我不想讨论技术细节,好处必须对业务人员可见
我对我写下的论点不太满意,直到现在,我有没有忘记任何一点,无论是赞成还是反对
我要讲的情况有两点:
说服管理者使用ORM
说服管理者使用NHibernate
ORM专业版:
解决具有行为的连接对象的丰富生态系统与标量值列表之间的阻抗不匹配问题
更高的生产效率=>缩短了编写繁琐的数据访问代码的时间,使您能够更专注于解决“真正的”业务问题
更高的可维护性=>更少的LOC==系统更容易理解
我想从ADO.NET获得关于外键冲突的正确异常。有办法吗
我正在使用try捕获ADO.Exception并检查它的消息文本是否为“foreign”。所以,如果异常文本中有“外来”文本,则这是一种违反,我可以发出警告
这是正确的方法还是其他方法
try{
base.Delete();
IList<Issue> issues = Issue.LoadForX(this);
foreach (Issue issue in issues)
{
issue.X= null;
i
我有两个实体角色和翻译。
角色->角色ID,代码
翻译->代码、语言、名称
意思是说对于某个角色,它有英文名、法文名等等。
例如:
角色(1,'Rol_001')可以具有以下关系:翻译('Rol_001','English','')和翻译('Rol_001','French','')
我想用HQL表达以下SQL查询:
select r.Role_ID, t.Name
from Role r left outer join Translation t
on r.Code = t.Code
我正在尝试使用NH3执行GROUPBYLINQ查询。
了解下面的SQL困难,我知道这是不可能的,但理想情况下,我希望通过一个实体进行分组,并将其整体检索。
比如:
var list = from proposals in Session.Query<Proposal>()
group proposals by proposals.Job
into jobGrouping
select new {
我最近刚开始使用NHibernate,在实现下面概述的域模型时遇到了一些问题
我要寻找的是一种过滤项目与其在特定数据存储上的ItemData集合之间关系的方法。数据存储要么是全局的,在这种情况下它们总是返回的,要么是特定于用户身份的(基于应用程序实例)
在SQL中,这可以通过一个简单的查询来完成:
SELECT * FROM Items i
INNER JOIN ItemData id ON (i.ItemId=id.ItemId)
LEFT OUTER JOIN Users u ON (id.
我是Lucene.NET的新手,已经遇到了一个我认为很难解决的问题。我有一个目标,比如说一家公司,现在有3种不同类型的公司,按重要性从低到高排列
如果我查询一个搜索词,我想为具有高度重要性的公司提供一个促进因素,例如伪代码:
[BoostIf重要性为=1,则为1,如果重要性为2,则为2,如果重要性为3,则为3]
公共信息的重要性
{get;set;}
希望你明白我的意思,谢谢 尝试将重要性存储为一个字段,并按该字段对搜索结果进行排序
中的第5.2.4节对此进行了说明
您还可以尝试查看函数查询第5
我有一个这样的模式
使用者
用户信息密钥
Id INT
Description VARCHAR(100)
用户信息
User INT
Info_Key INT
Info_Value VARCHAR(100)
PRIMARY KEY(User, Info_Key)
这是我的用户映射文件:
<class name="User" table="[user]">
<id name="Id">
<column name="id" />
<g
我有一个查询/分页产品价目表的代码。。。我的ProductPrice对象有一个产品。。。
代码运行良好
但是看看log4net我有两个选择。。。
是这样吗
我的代码:
var query = Session.QueryOver<ProductPrice>();
Product product = null;
query.JoinQueryOver(mg => mg.Product, () => product);
query.WhereRestrictionOn(()
标签: Nhibernate
aggregatequeryovercorrelated-subquery
我想做的是显示一个简单的数据网格,其中包含实体数据及其子级的聚合数据。例如,让我们使用订单和行项目。我想显示订单信息和行项目的计数
OrderID、OrderDate、NumOfLineItems
现在,通常在SQL中,您可以通过多种方式来实现。但这是我认为在翻译成NHibernate时唯一可行的方法
SELECT o.OrderID, OrderDate, NumOfLineItems
FROM #Orders o
INNER JOIN
(SELECT o2.OrderID, COUNT(*)
背景:我需要为linqtohiberante创建一个自定义的扩展方法来执行以下操作
result.Where(p => p.MyIntColumn.IsLike('%100%') );
这样将输出一个自定义sql,如下所示
select * from orders where CONVERT(VARCHAR, MyIntColumn) LIKE '%100%'
我正试图通过扩展BaseHqlGeneratorForMethod来为其构建自定义表达式,如下所示
public
您知道,要在web应用程序中实现每个web请求的会话,我们通常在application_BeginRequest中创建一个会话,并在application_EndRequest全局事件处理程序中关闭它。然后每次访问数据库时,我们都通过GetCurrentSession获取当前会话,而不是通过OpenSession打开新会话
那么,在web应用程序中是否有机会同时使用每个web请求的会话和TransactionScope呢?根据NHibernate 3.0 Cookbook第117页,它说对Tra
假设我只需要从一个实体中选择一列/几列,但在一个查询中选择多个子项。
我一直在尝试投影,但在collections属性上出现错误。这是一种正常情况,但无法找到有关仅投影集合属性的信息
Customer customerAlias = null;
Order orderAlias = null;
var list = _session.QueryOver<Customer>(() => customerAlias)
.JoinAlias(
是否可以为惰性子列表的NHibernate连接条件编码(而不是映射)以下查询条件
...
JOIN ChildTable child ON child.ParentID = parent.ID AND <CONDITION>
。。。
在child.ParentID=parent.ID和
NHibernate 2.1是的,可以使用条件或QueryOver API编写该查询。下面是一个使用QueryOverAPI的示例
Child childAlias = null;
se
我正在连接到旧式sqlserver数据库。其中一个表的列名为Primary。脚本因此而失败
由nhibernate生成的脚本:
选择locations0\u0.CustomerID作为CustomerID1\u0,locations0\u0.LocationID作为LocationID1\u0,locations0\u0.LocationID作为LocationID2\u 0\u0,locations0\u0.Primary作为Primary2\u 0\u0,locations0\u0.Cust
摘自
“二级缓存的生存时间绑定到会话工厂,而不是单个会话。一旦实体通过其唯一id加载,并且二级缓存处于活动状态,则该实体可用于(同一会话工厂的)所有其他会话”
如果以上是真的,你有一个网络农场,我认为以下是真的
1) 每个应用程序将有一个SessionFactory(在我的例子中,每个web服务器)
2) 每个web服务器将有一个不同的二级缓存
3) 服务器B无法使用加载到服务器A的二级缓存中的数据
我说的对吗?正如你在文章中提到的:
NHibernate是一种企业或M/M产品的设计,因此,it
这是我第一次使用NHibernate,我从我的朋友那里得到了一个程序的源代码,之后程序运行良好,我尝试添加“Stock.hbm.xml”,如下所示:
using System;
using System.Collections.Generic;
using NBooks.Core.Util;
using NBooks.Data.NHibernate;
using NHibernate;
namespace NBooks.Core.Models
{
public interface IBaseM
我有一个数据库(无法更改),其中包含一整批存储在两列中的值:
当前,每个列都映射到一个属性,我的域对象如下所示:
int? Value1
bool IsValue1RealValue
string Value2
bool IsValue2RealValue
bool? Value3
bool IsValue3RealValue
我想把它们放入一个ValueType中,它可以保存2或3个值:
-值(存储在对象或T中)
-布尔值“RealValue”
-和(可选).NET属性名称的名称
目前,
这是我的配置文件。我有一个名为“盆地”的数据库。
我的sql server编辑是2012 express。
另外,我的项目名称是NHibernate_Test
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.Driv
我知道我们可以很容易地使用NHibernate应用过滤器来查询附加的where条件,但是在执行更新或删除时是否可以应用过滤器
如果是,我该如何实现这一点?是的,可以使用HQL(Hibernate查询语言)
下面是一个批量更新的示例
IQuery updateQuery = this.Session.CreateQuery("update TransferItem set Status = :newStatus where Status = :oldStatus")
我正在尝试使用多对一上的投影来获得一个查询
类“Post”有一个属性多对一“Creator”
使用
可以工作,但每个创建者都是通过单个查询检索的,而不是像不使用选择/投影时那样使用联接。因此,如果有5个帖子有5个不同的创建者,那么将运行6个查询,1个查询帖子列表,5个查询创建者列表
我试着用一个JoinAlias让它工作,但没有任何效果
我已经搜索了一个解决方案,但是我找到的所有解决方案都使用了Linq提供程序,因为实际的“字段列表”是通过一个参数传递的,所以它并不真正适合
是否有人知道除了li
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 183 页