在使用其他技术(和)几年之后,我又回到了使用NHibernate,我发现这个查询有点令人沮丧,尤其是与亚音速相比。我想知道人们在用什么方法
我觉得Hibernate查询语言不太合适,似乎太像编写SQL了,在我看来,这是使用ORM工具的原因之一,所以我不必这么做,而且它都是XML的,这意味着它不适合重构,只有在运行时才会发现错误
条件查询,似乎不够流畅
我知道Ayende的,是一个有用的工具,这是人们正在使用的吗?外面还有什么
编辑:值得一读
NHibernate的LINQ产品仍处于测试阶段;我很
我在NHibernate有一个场景,在实体雇员和雇员状态之间有一对多的关系
员工拥有ID、姓名和EmployeeStatus的IList等属性,而EmployeeStatus在本问题中只有自己的ID和一些自由文本
我不需要持有EmployeeStatus中对Employee的引用,状态的管理“将完全通过Employee实体完成-添加到IList属性。IE:我想简单地做到以下几点:
Employee e = new Employee();
e.Name = "Tony";
e.StatusList
我读到,配置的初始加载时间在nHibernate中可能相当长,这取决于映射表的大小等
是否只执行一次并存储在会话或缓存中?
是否每次ASP.NET进程回收时都会发生这种情况?使用配置来构建ISessionFactory。这是一个一次性交易-将在应用程序启动时发生。配置对象通常与ISessionFactory关联。如果有很多映射正在生成(通过调用cfg.BuildSessionFactory),那么会话工厂可能会很慢。这就是为什么只需要构造一次会话工厂,并在整个应用程序中使用它的原因。在ASP.N
我有两个表Deal和Cost。成本可以有多种类型,如计划内、计划外。每笔交易都可能有一笔——每种类型的成本只有一笔。这很容易映射为多对一的交易,并在成本上重新组合。但是我想要的是创建一个costs对象,它为每个cost都命名了属性。因此,对于如下所示的数据库:
Deal: Cost
ID Name ID DealID Type Value
--------- ----------------------
我从如何使用nhibernate的示例中获得了这个产品类(但我对它做了一些修改)
我希望能够将一个类及其所有引用映射到数据库中
[NHibernate.Mapping.Attributes.Class(Lazy=true)]
public class Product
{
[NHibernate.Mapping.Attributes.Id(Name="Id",TypeType=typeof(Guid))]
public vi
我有一个名为ReportRequest的类:
public class ReportRequest
{
Int32 templateId;
List<Int32> entityIds;
public virtual Int32? Id
{
get;
set;
}
public virtual Int32 TemplateId
{
get { return templateId;
我有以下映射,多对一属性“Message”在“RootMessage”类中有一个对应的一对多关联
<class name="IMessageReceipt" lazy="false" table="MessageReceipts" abstract="true">
<id name="Id">
<generator class="guid.comb"></generator>
</id
我有一个表3级的层次结构(QualificaionType有许多QualificationGroup,它们有许多限定条件),映射如下:
// QualificationType
HasMany(x => x.QualificationGroups)
.Inverse()
.KeyColumns.Add("QualificationGroupId")
.AsBag()
.Cascade.AllDeleteOrphan()
.Access.CamelCa
我得到一个异常,因为a.Bs是空的。
这只发生在测试套件的上下文中,当我运行单个测试时,我得到一个集合,一切都正常。
我希望,由于默认值是lazy-fetch,所以当我访问属性getter时,Bs将被初始化,但是如果失败,我希望得到一个异常,而不是简单的null。。。既然这样,我现在还不知道是什么原因造成的。有什么想法吗
PS:这是映射:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:
我有一个域对象,它有两个Uri属性,需要持久化到一个URL表中,该表有Uri的几个部分,在检索后需要从中重新组装这些属性。我可以很好地存储这些属性,但是如何告诉NHibernate如何重新创建Uri属性呢?不能直接设置Uri对象的大多数属性。相反,url必须被组装并传递给Uri构造函数。我个人并不认为Uri类型非常有用,但我可以想到两个选项:
通过实现IUserType创建一个新的用户类型(请参阅-SearchfortheURI实现,大约是一半)
创建映射到NHibernate中的受保护字符串属
我正在连接一个遗留数据库,它是我们的ERP系统。我有一个使用复合键的表,其中一个字段是递增的,但它在记录的子组中是唯一的。我没有能力改变这一点,尽管我希望我能
比如说,,
CustomerId_字段,SequenceID_字段
49, 1
49, 2
200, 1
200, 2
200, 3
200,4
此多用户应用程序的典型插入如下所示:
插入MYTABLECustomerId_字段、SequenceID_字段
值?CustomerId_字段,选择MAXSequenceID_字段+1,其中Cu
我有一个属性为Employee的任务对象。我正在试图找到一种最好的方法,将验证设置为只允许某些员工访问任务对象。如果当前上下文用户web/winforms尝试实例化任务对象,该对象应自动验证自身并返回验证错误消息。
你能告诉我最好的方法是什么吗
我使用Fluent nHibernate和Castle验证程序,前端是asp.net MVC
public class Task:ITask
{
public virtual int TaskID { get; set; }
我有一个不接受空值的数据库,每个字段都有一个默认值。使用fluent nHibernate,如果我有一个填充了一些但不是所有属性的组件,那么在插入时会出现错误。我只是想知道如何将DynamicSert标志降低到组件级别。也许已经晚了,但我还是把这个放在这里,看看它会去哪里
映射:
public ClientMap()
{
Table("Clients");
DynamicInsert();
DynamicUpdate();
我还不熟悉Hibernate,正试图将它用于我继承的网站。不幸的是,这意味着有时候db模式并不总是有意义的
话虽如此,我正试图使用CriteriaAPI构建以下HQL查询
from TableB b where b.id = :id and b.TableAProperty.UserId = :userId
上面的HQL语句生成SQL,它将只选择并返回TableB,这正是我想要的。但是,使用如下所示的CriteraAPI语句,生成的SQL语句选择TableB和TableA的字段
DataPro
是否可以在NHibernate映射文件中设置默认的按列排序?除非明确定义,否则我希望自动按名称列对所有特定实体进行排序
我已经看到它可以在集合上完成,但这不是我在本例中所追求的。不,这在NHibernate映射上下文中没有意义,因为顺序始终取决于您如何执行查询;定义“默认顺序”毫无意义
相反,在DAO/存储库基类中执行此操作
我们时不时会遇到这个非常奇怪的错误
NHibernate.ADOException: could not execute query
[ SELECT this_.Id as Id37_0_, this_.AREA_ID as AREA2_37_0_, this_.BAT_CHK as BAT3_37_0_, this_.BAT_COD as BAT4_37_0_, this_.BBEACT as BBEACT37_0_, this_.CREDATE as CREDATE37_0_, this_
我正在寻找基于NHibernate映射数据生成应用程序数据库完整结构的方法。其思想是为用户提供一个选项,以提供数据库连接字符串,然后使用应用程序所需的结构构建数据库
数据库需要独立-这意味着它需要与NHibernate支持的任何数据库一起工作
所谓完整结构,我的意思是我还想生成索引字段和表之间的关系
他们用NHibernate实现这一目标的几种方法是什么?那么,它们是什么呢?您可以使用该类来实现此目的。API有点奇怪,但它仍然可以工作。您使用该类就是为了这个目的。API有点奇怪,但它仍然可以工作
使用ReSharper5转换到Visual Studio 2010后,我的一些单元测试开始失败。更具体地说,这适用于使用NHibernate和SQLite的所有单元测试。这个问题似乎与SQLite有关。不涉及NHibernate和SQLite的单元测试仍然运行良好
例外情况如下:
NHibernate.HibernateException : Could not create the driver from NHibernate.Driver.SQLite20Driver, NHibernate
考虑一个数据库(MSSQL 2005),它由100多个表组成,这些表在一定程度上定义了主键。表之间存在“关系”,但这些关系不受外键约束的约束
考虑下面我正在处理的典型表类型的简化示例。用户表与城市表和省表之间有明确的关系。但是,它们的关键问题是表中的数据类型和命名约定不一致
User:
UserRowId [int] PK
Name [varchar(50)]
CityId [smallint]
ProvinceRowId [bigint]
City:
在我工作的公司,我们有一个单一的数据库模式,但我们的每个客户都使用自己的专用数据库,一个中央数据库存储客户联系方式和客户使用的数据库,以便我们可以连接到适当的数据库。我看过使用NHibernate碎片,但它似乎变得非常安静,看起来不完整
有人知道这个项目的状态吗?有人在生产中使用过吗
如果它还没有达到可以在生产中使用的程度,有什么替代方案?两个主要问题似乎是:
为每个数据库创建一个会话工厂,然后创建一个包装器来选择合适的工厂来生成正确的会话——在我看来,这似乎有多余的会话工厂,效率不高
只创建一
通常在这种情况下,在检索产品时,它将仅在特定客户的上下文中。换句话说,我只对属于该特定客户的评论集合的成员感兴趣
因此,在检索产品对象时,是否有一种方法将集合的填充限制为与客户我提供的内容相关的审阅?这将如何在NHibernate中实施?这是否完全符合NHibernate的最佳实践(并在较小程度上符合DDD)
公共类产品
{
公共虚拟字符串名称{get;set;}
公共虚拟ISet评论{get;set;}
公共产品()
{
Reviews=新的HashedSet();
}
}
公开课复习
{
公
让我们从这个映射开始:
<component name="Location">
...
<property name="Settings" type="JsonUserType,...">
<column name="LocationSettingsType" />
<column name="LocationSettingsData" />
</property>
</component>
及
嗨,我是nhibernate的新手,我读了很多有类似问题的帖子,但我没能让它工作。
我使用oracle、nhibernate3 alpha和fluent nhibernate进行映射。我有亲子关系。子表具有复合id。选择、插入、更新记录都有效。删除没有子记录的父记录有效。但是删除一个有孩子的家长或只删除一个孩子会抛出一个KeyNotFoundException。我好像在地图上遗漏了什么
堆栈跟踪
bei System.Collections.Generic.Dictionary`2.get_It
我在描述NH中的数据库设置时遇到一些问题
我有以下课程:
public class BaseData
{
public virtual long Id { get; set; }
}
public class ExtendedData : BaseData
{
public virtual string Name { get; set; }
}
支持表如下所示:
BaseTable
---------
* Id
关于这个话题有很多讨论[nhibernate for medium trust]。非常想知道是否有一个地方可以使用与medium trust兼容的Nhibernate和依赖库
这将非常有帮助。事实上,有一个地方可以让文件在中等信任环境中运行NHibernate,而无需执行诸如禁用延迟加载之类的疯狂操作。我写了一篇关于它的博客文章,并提供了下面的链接
获取文件非常简单,请看一看
祝你好运 谢谢Kila Morton,在Follow获得了图书馆,它也很有效。(同样感谢约翰…)
我的域对象不使用数据库表中的2个不可为空的列。这两列都是guid。有没有办法在映射文件中为这些列提供默认值,以便将域对象保存回数据库?您有几个选项:
在hbm.xml文件中提供您自己的。不幸的是,这迫使您控制所有插入逻辑
将列映射到对象中未公开的私有字段,并在创建新实例时设置GUID。然后,NHibernate可以在插入时将这些字段保存回去。您还可以将映射标记为update=“false”,以便只插入它们
在数据库架构中为这些列添加默认值
另一个选项是使用eventlistener。我这样做是
标签: Nhibernate
castle-activerecordnhibernate-criteria
为了简单明了,假设我有这三张表
员工
[
身份证件
]
员工姓名
[
雇员ID,
名称
]
员工地址
[
雇员ID,
地址
]
“子表”EmployeeName和EmployeeAddress中仅定义了属性/关系
EmployeeName属于员工
员工地址属于员工
主员工表中没有属性/关系(集合),例如
雇员有许多雇员姓名
这个雇员有许多雇员地址
我想仅在EmployeeName和EmployeeAddress之间使用DetachedCriteria执行联接(不涉及员工)
选择Emplo
若我在互联网上搜索NHibernate标准API查询示例,有一些示例使用限制,而其他示例使用表达式。这两者有什么区别
例如:
posts = session.CreateCriteria<Post>()
.Add(Expression.Eq("Id", 1))
.List<Post>();
posts = session.CreateCriteria<Post>()
.Add(Restrictions.Eq("Id", 1))
我正在尝试使用nHibernate、Castle Windsor、WCF和ASP.NET为基于分布式域驱动设计的系统绘制技术架构图
我使用了典型的层,即基础设施层、接口层、应用程序层和域层
我的理解是否正确,将nHibernate、Castle Windsor、WCF作为DDD基础设施层的一部分
请告知。我认为您的声明是正确的,即nHibernate、Castle Windsor、WCF应位于基础设施层
实际上,它们的用法不同。
WCF通常放置在单独的程序集/项目中,因此可以被视为底层,因为我们
我有一个客户机类和一个会议类,我试图检索每个客户机的所有后续会议。这样我就可以为每个客户开一次会议
我最终得到了这样一个问题:
var qry = from client in session.Query<Client>()
select new
{
c = client,
e = client.Meetings.OrderBy(x => x.Date).First()
我正在尝试自动映射一个类代码。代码可以有(子)代码
这是可行的,但我的表中有IdParent列和IdCode列。
命名父属性IdCode没有帮助,然后我会得到IdIdCode列和IdCode
我需要做些什么来解决这个问题
我使用配置对象的自动映射似乎您的自动映射使用了一种约定,将前缀Id添加到引用和Id中
如果需要,您可以在AutoMap配置中使用自己的自定义ForeignKeyConvention来覆盖此约定
否则,只需相应地命名db表列。父表列的名称不是问题。关键是它被添加了两次:一次用于外
我一直在升级我的NHibernate安装(仍在1.2版本!)。在我尝试设置拦截器之前,一切都很好。如果我向OpenSession()调用添加了拦截器,那么在尝试从DB加载实体时会出现以下错误:
“无效强制转换(请检查映射是否存在属性类型不匹配);System.Object的setter”
如果没有拦截器,则不会发生此错误
拦截器非常简单,事实上,为了测试,我几乎注释掉了所有内容:
public class Interceptor : EmptyInterceptor
{
public o
我正在考虑将Fluent NHibernate用于SQL Server 2008的一个新应用程序,但我很难理解我看到的连接处理行为
我正在使用sp_who2监控连接,下面是我看到的:
创建SessionFactory时,将打开一个连接。这种联系
似乎一直保持打开状态,直到应用程序被终止
打开新会话时不会打开任何连接。(没关系,我知道NHibernate会等到最后一刻才创建数据库连接)
即使通过NHibernate运行查询,也不会打开新连接。我必须假设它使用的是创建SessionFactory时创
当我映射一个属性类型为System.type的实体时,我知道NHibernate会将其映射到DbType.String,其中包含程序集限定名,并且我可以在表中看到,type列包含类似“TarkusSoftware.Abstract.ITask,TarkusSoftware.Abstract,Version=1.0.0,Culture=neutral,PublicKeyToken=null”的值
这对长期开发意味着什么,当我们最终将汇编版本(例如)更改为2.0.0.0时会发生什么?我认为NHibe
我有一个nhibernate问题,我正在投影sql合并函数
我正在比较两个不同实体中具有相同名称的两个字符串属性。在生成的sql中,仅比较第一个实体中的相同属性,因此:
var list = Projections.ProjectionList();
list.Add(
Projections.SqlFunction("Coalesce",
NHibernateUtil.String,
Projections.Property<TranslatedText>(t
我有一个继承层次结构,其中Action是ActionCompleted和ActionCancelled的父级。订单类有一个0:1的ActionCompleted和ActionCancelled
我想要保留外键的唯一位置是orderId的action表中。可能吗?这在关系世界中运行良好??可能有7-8个动作类型和顺序与它们都有零对一的关系
我是ORM新手,从EF开始学习,但到目前为止还没有得到任何帮助来解决这个问题,现在我想用NHibernate来探索这个问题。我知道这可能要求太多,但如果有人有一
我在这里有点迷路了
我搜索了一些信息,似乎有几个SQLite GUI工具来创建SQLite DB文件。同时,我还注意到NHibernate附带了SQLite的内存配置
return Fluently.Configure().Mappings(m => m.FluentMappings.AddFromAssemblyOf<MyEntityMap>()).Database(SQLiteConfiguration.Standard.InMemory().ShowSql()).Buil
我有几个类/映射。。。一切正常。。。
有时会创建一个视图以获得更好的性能
我想知道是否可以在不创建DB视图的情况下创建特殊映射
例如,我有:
class Test
{
Test2 test2;
string a;
}
class Test2
{
Test3 test3;
string x;
}
class Test3
{
Test4 test4;
string y;
}
我想创建一个类/映射(不创建db视图),如下所示:
class CustomTest
{
我真的很难启动我的第一个NHibernate项目,我认为我的问题主要围绕Enum。我当前遇到以下异常:
System.InvalidOperationException: Tried to add property 'Name' when already added.
我已经下载了Fluent NHibernate源代码,并在异常发生的地方设置了一个断点,并且能够将其锁定为与EnumStringType有关的内容
我定义了以下类:
public class CurrencyStringType
。。但不是k.i.s.s.i.n.g
我正在尝试使用NInject和NHibernate。通过我使用的NuGet
NHibernate v3.1.0.4000
NHibernate.CastleV3.1.0.4000
NHibernate.linqv1.0
FluentNHibernate v1.2..0.712
NInject v2.2.1.4
当我试图通过NInject解析类时,会出现以下错误:
无法加载文件或程序集“NHibernate,版本=2.1.2.4000,区域性=中性,Pub
我得到了一个例外:
"An association from the table order refers to an unmapped class: FrancosPoS.DBMapping.pastaCombo"
对于此NHibernate映射:
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping assembly="FrancosPoS" namespace="FrancosPoS.DBMapping" x
我现在有4张桌子
产品,类别,子类别,产品子类别
类别具有“一个域”的多个子类别关系
产品与类别之间存在一对一关系,与子类别之间存在一对多关系
这些桌子看起来像这样
产品表
Id Name CategoryId
-----------------------------
1 P1 1
2 P2 2
Id Name
-----------------
1 Food
2
我有一个实体GameSystemDAO和一个实体ChampingsItemDao,其属性GameSystem是GameSystemDAO类型的多对一。什么是对应于以下SQL的QueryOver表达式
select *
from gamesystemdao g
where not exists (
select *
from contestplanninggsitemdao cpgsi
where cpgsi.gamesystem = g.id)
我尝试了以下(以及许多其他变体):
我将nHibernate 3.3.1.4与代码映射一起使用
具有人物和图片对象,其中人物具有图片成员。
Picture有一个Id(int)和Image(byte[])成员。
上传新图片时,我想先删除旧图片,如下所示:
var person = _personRepository.Get(personId);
var picture = partner.Picutre;
_pictureRepository.Delete(picture);
但是,我的映射似乎不正确,因为我得到一个关于“DELE
我试图获得一个实体的总评论,但我得到的结果不正确
我如何获得任务及其注释计数(急切加载)
var tasks=\u session.QueryOver(()=>taskAlias)
.Where(x=>x.OrganizationID==null)
.Fetch(x=>x.AssignedUser).Eager
.Fetch(x=>x.Owner)
.Fetch(x=>x.Comments)
.List();
这将返回:
任务ID 1注释3
任务ID 1注释3
任务ID 1注释3
Task.I
我正在使用NHibernate 3.3.2(这是第一次),我正在尝试创建下表,以便ID是唯一的表/实体标识符,序列是每个组的唯一标识,在表示例中,俱乐部123、232和444是组
ID Club Sequence
1 123 1
2 123 2
3 232 1
4 232 2
5 444 1
6 123 3
我希望插入只是与俱乐部类别,这两个身份将是自动的
这能做到吗?如果是这样,我该怎么做呢?如果问题是这样的:
根据此模式生成序列列中的值的最佳方法是什么
下面是一些提
我希望实现此层次结构:
BaseOrder --> Order --> ConstOrder
我的映射:
BaseOrder.hbm
<class name="BaseOrder, BackOffice.Core" abstract="true">
<id name="Id" unsaved-value="0" type="int">
<column name="id" not-null="true"/>
<
经过无数个小时的努力使实体框架与Oracle协同工作,我已经放弃了,开始走上了NHibernate的道路
我有点纠结于行话,有个问题。给定以下类,如何使用writeofApprovalUser.UserName作为Employee.MailID字段的键,使NHibernate(流畅映射)输出类似于下面SQL的内容
C#类
public class WriteOffApprovalUser : EntityBase<WriteOffApprovalUser>
{
public
我在执行NHibernate查询时遇到一个奇怪的错误。
我有一个类型为IQueryOver的查询,它被过滤和转换(使用distinctroventy,我猜这是导致问题的原因)。我创建如下查询:
List<Guid> companyList = /* some guids */
Company company = null;
var query = _session.QueryOver<ExternalUser>()
.JoinAli
我对DB中的重复行有问题,希望以一种温和的方式处理它。我有一个NHibernate查询,它将一些数据插入到数据库中(插入到两个具有关系的表中)。如果表中已经有包含特定数据的行,我不想复制它。目前,创建了一个具有不同ID的副本。我听说有一种方法可以使用NHibernate生成标识符,然后将其与不重复的行进行比较。如果您想引用已知ID的现有数据,而不想加载记录来保存它,那么有:
var foo = new Foo { Prop1 = 1, Prop2 = "Bar" };
foo.RefPrope
1 2 3 4 5 6 ...
下一页 最后一页 共 133 页