我们的系统使用用户选择的收件人/抄送/密件抄送联系人列表生成电子邮件。我想在SQL Server数据库中按如下方式存储它们,以下是简化的数据库表结构:
CREATE TABLE [Contact] (
[ContactID] [int] IDENTITY (1, 1) NOT NULL,
[Name] [varchar] (100) NOT NULL,
[EmailAddress] [varchar] (100) NOT NULL,
CONSTRAINT [PK_
我有一个对象、顺序、联系人和地址的层次结构:
public class Order {
public virtual Contact BillingContact { get; set; }
}
public class Contact {
public virtual Address Address { get; set; }
}
我想按id查询订单,然后加载billingcontact及其地址
var criteria = DetachedCriteria.For&l
是否有一种编写NHibernate映射的方法,这样您就可以拥有一个由来自不同DB表的字段组成的实体
例如,我有一个Person和Address表,我希望地址字段出现在我的Person对象中
我想要一个这样的实体:
public class person
{
public virtual Guid Key{get; set;}
public virtual string Name {get; set;}
public virtual string Age {get; set
我正在SQL Server Express 2008上使用:NHibernate、NHibernate.Linq和Fluent NHibernate。我正在使用引用属性上的谓词选择一个实体(多个映射)。我有fetch=join,unique=true,lazy-load=false。我启用了log4net日志,当任何这样的查询执行时,它都会记录两个相同的SQL查询。运行查询会返回一行,当我尝试使用IQueryable.Single扩展方法时,它会抛出异常,指出返回了多行。我还尝试使用标准IQue
我有一个带有字段的成员表
MemID-主键
企业名称
营业地址
商务电话
我需要创建一个Employer类,它的属性来自同一个Members表。
雇员姓名
雇员地址
雇员电话
这是我的雇主
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="true">
<class name="Employer, Entities" lazy="true" table="Members" dynamic-upd
示例:
客户端对象有一组操作对象,记录对客户端执行的操作的历史记录。Action是抽象的,有几个子类,例如SystemAction、RespondenceAction等
我有一个客户端搜索屏幕,其中有许多可选的搜索条件,因此使用CriteriaAPI是显而易见的选择。一些搜索条件与Action子类的属性相关。例如,通信行动中的收件人
是否可以使用NHibernate ICriteria API查询事件子类的属性?我应该使用什么机制(可能是分离的子查询?是的。为用户可以指定的每个搜索条件创建Det
这一定是个简单的问题。给定一个条件,如何删除满足该条件的实体
理由:
HQL和NH标准是特定于NHibernate的构造,因此它们是服务器端DAL实现细节。我不希望他们“泄漏”到客户端。因此,我们的客户端提供LINQ表达式供服务器处理。到目前为止,select请求和LINQ到NHibernate的请求处理得很好
但是,现在需要实现批量删除操作。通常,客户端提供LINQ表达式,服务器将删除满足该表达式的实体。
不幸的是,LINQ to NHibernate在这里毫无帮助。它最多只能将给定的LINQ
我使用的是NHibernate,我有一个要运行的查询,它包括返回整个表加上一个count和groupby。从我在网上看到的,你不能用NHibernate标准来做这件事
为了解决这个问题,我使用了一个命名查询:
选择id,将(id)计数为myCount
从富内加入巴
ON foo.id=bah.fooId
WHERE foo.Name像:Name
按食物分组
当我只想传入一个参数时,这可以很好地工作
然而,我真正想要实现的是:
选择id,将(id)计数为myCount
来自富
foo.id上的内
我将log4net与NHibernate一起使用,并记录NHibernate生成的SQL语句
是否有任何方法可以指示NHibernate只记录DMLSQL语句(插入、更新、删除),例如“NHibernate.SQL”+“.DML”之类的内容在日志配置中?您应该能够向NHibernate.DML的配置文件中添加另一个记录器节点,该节点将记录这两个日志。您应该能够向NHibernate.DML的配置文件中添加另一个记录器节点,该节点将记录这两个日志。否。不幸的是,没有内置的方式满足您的需要。否。不幸
我想知道是否有相对简单的方法来扩展NHibernate以支持F#的歧视性联盟。不仅仅是一个IUserType或ICompositeUserType,而是一些我可以重复使用的通用类型,而不管DU的实际内容如何
例如,假设我有一个名为RequestInfo的属性,它是一个定义为:
type RequestInfo =
| Id of int
| Name of string
这将编译成一个抽象的RequestInfo类,带有具体的子类Id和名称。我可以通过F#reflectio
我正在为我的网站寻找新的架构,并想知道将NHibernate与web服务核心配对是否是一个好主意。我想做的是使我的Web服务成为我业务的核心,从网站前端到我编写的实用程序。我试图让我所有的UI完全不知道任何东西,除了我的服务API
在一个简单的斯特劳曼实验中,我遇到了序列化Iesi ISET的问题……这让我重新思考了整个策略
我知道我可以开发一个核心库(dll)并在我的每个应用程序中引用它,但是在至少6个应用程序上维护该dll的版本似乎会给我带来很多痛苦
对于NHibernate,这两种方法的优
NHibernate映射文件中的列表、集合和包之间有什么区别?每个元素与.NET集合的关系如何?主要的区别在于列表对元素有一个隐式的排序,按元素在列表中的位置进行索引。成套设备和行李也可以“订购”,通常由比较器或order by子句进行订购,当这些项目从DB中出来时,将应用该子句。就我个人而言,我从来没有用过包。。。如果我知道我想要的数据是按顺序排列的,我就使用列表,否则我就使用集合。集合不允许重复元素。如果您尝试添加一些新元素,它将比较(使用Equals方法)已在集合中的每个元素与您添加的元素
我目前使用的是nHibernate,但有一个问题,即两个对象分别加载,但在数据库中表示同一个实体,它们的引用不相等
例如,请参见以下代码部分:
CrudRepository<Customer> cr1 = new CrudRepository<Customer>();
Customer c1 = cr1.GetById(new Guid("0D19B0F0-CA41-4D4B-9FB9-9CF600F86A4B"));
CrudRepository<Custome
我有一个类行,它包含两个POINT类型的属性。
我想点是一个组件属性。
若该行只包含1个点,那个么这并没有问题,但由于它包含2个点,我认为我需要区分它们(所以可以将前缀或后缀应用于列名)。
我尝试使用ComponentProperty标记的PropertyName属性,但在我的行表中仍然只生成一组X和Y列
为了清楚起见,我的目标是创建一个包含Point1_X、Point1_Y、Point2_X和Point2_Y列的行表
我使用Nhibernate.Mapping.Attributes,下面您可以
我有一个简单的父/子表。合同是父表。每个合同可以有多个单元
以下是我的C类简化定义:
public class Contract : EntityWithIntID
{
public virtual string ContractNum { get; set; }
public virtual IList<Unit> Units { get; protected set; }
public virtual int NumberOfUnits
{
我试图返回一个SimpleQuery列表,该列表查询单个表并在中使用。
我可以用它来工作
return new List<Jobs>(
ActiveRecordMediator<Jobs>.FindAll(Expression.In("ServiceId", ids))
);
返回新列表(
ActiveRecordMediator.FindAll(表达式.In(“ServiceId”,id))
);
然而这真的很慢。所以我想做一些像这样的事情
SimpleQu
一个项目可以有很多部分。部件上的属性是Ipn,它是一个数字字符串
项目A包含第1、2、3部分
项目B包含第2、3、4部分
项目C包含第2部分
项目D有第3部分
我想找到所有与之关联的指定部分的所有项目。我现在的问题是
var ipns = new List<String> { "2", "3" }
var criteriaForIpns = DetachedCriteria
.For<Part&g
普通的NHibernate设置,例如,没有流畅的NHibernate,没有HQL,除了域对象和NHibernate映射文件之外什么都没有。我通过以下方式加载对象:
_lightSabers = session.CreateCriteria(typeof(LightSaber)).List<LightSaber>();
然后我保存光剑:
session.SaveOrUpdate(myLightSaber);
我所看到的一切都表明,是的,在这种情况下,您不受SQL注入的影响,因为NH
是否可以使用NHibernates组件进行继承?一个快速的google只返回了一手合适的结果(所有的博客),所有的结果都是前一段时间写的,所以我想知道它是否可用
如果不是,您如何处理它呢?目前不可能。如果您需要继承,您必须映射一个实体。除了Diego所说的之外,还可以使用IUserType为层次结构实现自定义水合/脱水。有关详细信息,请参见(它的Java,但在C#中可以使用相同的机制)
并且Hibernate特性请求是。NHibernate版本是,请投票。是
public class A { }
我有一个应用程序,我想对所有实体进行快照,创建表示特定时间点的克隆表。然后,我希望能够比较这些快照之间的差异,以了解数据是如何随时间演变的
您将如何在NHibernate中实现这一点?NH似乎不是为这种类型的数据操作而设计的,我不确定我是在滥用我的数据库NH,还是两者兼而有之
(注意,由于数据库引擎限制,我无法使用视图或存储的过程。)是否确实需要在此快照中保存每个实体的全部内容?如果是这样的话,也许一组名为_snapshot的表会有所帮助。您可以将实体保存到此表中(仅插入,从不更新)。您可以存储
我一直在优化我的一个查询…这是我的场景
我有一个类似于Twitter的域,用户可以在其中跟随其他用户。下面是我的用户模型示例:
User
-> Followers (many-to-many users)
-> Following (many-to-many users)
我现在需要返回用户“XYZ”的分页结果,但还需要确定当前登录的用户是否在跟踪返回的跟随者所需的即时加载数据
因此,我需要急切地加载它:user->followers->following(可能带有一个过滤器,
标签: Nhibernate
linq-to-nhibernatecompositeusertype
我们有一个成熟的nHibernate项目,已经开始在nHibernate contrib中使用linq提供程序。由于我们使用的是nHibernate 2.0,我们不能在主干中使用正在开发的新提供者(与nHibernate 3.0相比)
虽然有限,但事实证明,除了一个问题外,它非常适合我们的需要-每当我选择一个CompositeUserType时,我都会收到一个错误“
我不确定Linq到nHibernate提供程序v1是否能够理解这些类型。有人确切知道吗?我正在尝试源代码,但没有找到多少乐趣。我希
我正在运行来自NHibernate的查询,并将我的探查器设置为跟踪任何缓慢的查询,在我的探查器中有一些似乎需要10秒以上的时间:
exec sp_executesql N'SELECT top 50 this_.Debiteur_ID as Debiteur1_44_6_, this_.Debiteurnaam as Debiteur2_44_6_, this_.Debiteurnummer as Debiteur3_44_6_, this_.IsBedrijf_NeeJa as
IsBedr
对于NHibernate驱动程序的拟议更改,以使基于NHibernate的解决方案更易于构建和部署(请参阅),我们需要收集以下RDBMS的不变提供者名称:
AdaptiveServerAnywhere
DB2
火鸟
安格尔
MySQL
神谕
SQLite
SQL CE
赛贝斯
回答这个问题,你不需要知道所有的答案;只要输入你知道的
谢谢 好吧,看起来在我们的列表中速度更快:-)
这是名字,感谢弗兰斯·布马和杰森·丹特勒
AdaptiveServerAnywhere:“iAnywhere.D
我正在尝试用索引列映射列表。这很好,但我也希望能够从HQL查询索引列。当我这样做时,会抛出一个异常:
NHibernate.QueryException:无法解析属性:位置:组件[位置,时间]
为了能够从HQL查询WayPoint.Position列,我在WayPoint类中创建了一个Position属性,我想将此属性映射到Position列
我试过:
wp.Map(x => x.Position).Column("Position");
但这会导致映射异常:
NHibernate.Ma
我们有一个SQL Server数据库,它有一百万条ish记录,这些记录由Lucene.net通过Nhibernate.Search索引。当我们为我们的类建立索引时,我们试图扩展,因为索引/检索的成本非常小。其目标是在带有分页的网页上为用户提供全文搜索
由于SQL Server在向其发送太多参数(默认情况下为2100个参数)时会抱怨,而且我们不希望每次达到限制时都更改该参数(这很容易发生,文档中的某些术语非常常见,但必须可搜索)我们决定在Lucene中处理从排序到分页的所有事情。它就像一个符咒
然
我在生产web服务器上遇到以下错误:
NHibernate.LazyInitializationException
:
Initializing[Domain.Entities.AudienceTypes.Region#4]-failed to lazily initialize a
collection of role: Domain.Entities.AudienceTypes.Region.PeerGroups,
no session or session was closed
这
我在解决如何将以下sql导入NHibernate iLiteria时遇到问题:
select * from Contract contract_outer
where exists (
select 1 from RequiredDocRules
where not exists (
select 1 from Contract contract_inner
inner join ContractDocs contractDocs on cDocs
我使用的是Nhibernate 2.12,但锁定模式有问题。我正在尝试向别名上的sql语句添加NoLock。当我使用不提供投影列表的crieria进行此操作时,效果很好。但是当我添加一个投影列表时,它在NHibernate的NHibernate.Loader.Criteria.CriteriaLoader.applylock(SqlString sqlSelectString,IDictionary`2 lockModes,方言)部分上给了我一个讨厌的“对象引用未设置为对象实例”错误
我错过什么
我想与Nhibernate一起使用FileStream
我在stackoverflow上找到的唯一帖子是
与此同时,发布了Nhibernate 3.0(和3.1)
有人知道解决方案吗?nhibernate不打算支持该解决方案。(不会修正)
我希望将来会有所改变。。。也许一个扩展(开源魔法)Nhibernate可以与文件流一起使用。。。某种程度上。
使用Nhibernate将对象保持为正常。然后,您可以发出几个标准SQL查询来处理文件流。我将查询作为命名查询放置在对象的映射文件中
public
我需要对子集合执行子查询,但无法使其工作
我试过这个
Task tAlias = null;
List<Task> result = session.QueryOver<Task>(() => tAlias)
.Where(Restrictions.In(Projections.Property(() => tAlias.Course.Id), courseIds))
我在FluentNHibernate中遇到了一个奇怪的问题:当我保存实体时,其中一个(引用)属性没有更新。其他属性(字段和引用)都会更新,失败的属性也会正确映射(检索实体就像一个符咒)
对我正在做的事情的(稍微简化)描述:
在我的MVC操作方法中,绑定并设置了一个InputModel。它有一个用于TypeID的属性,我希望在这里设置实体的类型(我们将实体类型称为Thing)
创建一个新的对象,并复制输入模型的简单属性。对于两个复杂属性,其中类型属性不起作用,另一个属性不起作用,执行以下操作:
2
我正在使用NHibernate查询一个具有以下格式的元组的表:(String,Int?),其中整数可以为null。所以,我想把结果按数字分组,然后按字母顺序排序。在得到查询结果后,我可以很容易地做到这一点,但我想让NHibernate制定一个执行此操作的查询。以下是我想要的结果示例:
α,1
δ,4
高尔夫,3
2号酒店
利马,5
查理,0
θ,0
beta,空值
回显,空
我要寻找的三个分组是:(int>0),(int==0)和(int=null)。以下是我使用的查询:
var devices
如果我的类映射包含Referencem=>m.Store.ColumnStoreId,并且我调用SchemaExport,那么我的数据库表包含两个外键列,一个名为“StoreId”,另一个名为“Store\u id”
如果我离开Column方法,那么它只会创建“Store\u id”列
这是FluentNHibernate框架中的一个bug吗?
我只想要“StoreId”列
提前谢谢
public class EntityMap<T> : ClassMap<T> wher
我有两个基类Student和Course,还有一个子类StudentCourse,它们继承了这两个基类的属性
有可能对连接的子类进行这样的继承吗
我尝试为学生和课程创建界面,如下所示:
public interface StudentInterface
{
Int32 StudentId { get; set; }
}
public interface InterfaceCourse
{
Int32 CourseId { get;
在ASP.NET Web API中,它允许您在url字符串中编写ODATA查询,以指定要从方法返回的数据。然而,我很难理解的是,ODATA的作用是过滤C对象的IQueryable集合,而不是数据库表本身
这是不切实际的,因为您确实希望在数据库级别进行筛选,因为从数据库返回所有对象,将它们加载到一个可查询列表中,然后让ODATA筛选该列表会很糟糕
以下是使用NHibernate和Castle Active Record进行数据访问的代码:
public IQueryable<Message&
我有一个带有组合键的映射,如下所示:
CompositeId()
.KeyReference(x => x.CreatedBy, "member_key")
.KeyReference(x => x.Box, "box_key");
这对于简单的GET和INSERT很好,但是它不会生成与引用中提到的表的联接,我在引用中尝试将它们用作查询的一部分
因此:
return _sessionFactory.GetCurrentSession(
我很难理解NHibernate和petapoco加载机制。实际上,我做了一个测试来比较两者在查询时的行为
我的班级如下:
UserTest.cs具有以下属性:
private string name;
private int id;
private int customerId;
public int ID
{
get { return id; }
set { id = value; }
}
public string Name
{
get { return name
我有下一个实体:
public class Topic : EntityBase
{
private readonly ICollection<Vote> _votes;
public virtual string Title { get; protected set; }
public virtual ICollection<Vote> Votes
{
get { return _votes; }
}
如果我有以下课程
public class Order
{
public virtual ISet<OrderItem> OrderItems { get; set; }
}
public class OrderItem
{
public virtual Product Product { get; set; }
}
公共类秩序
{
公共虚拟ISet OrderItems{get;set;}
}
公共类OrderItem
{
公共虚拟产品产品{get;s
我知道NHibernate的二级缓存在SessionFactory级别工作。我在NHibernate配置中使用连接提供程序来处理我的多租户环境。我想知道二级缓存如何与连接提供程序交互。也就是说,它是智能地为每个单独的连接字符串维护缓存,还是所有连接共享同一个缓存
显然,共享同一个缓存是一个巨大的禁忌,因为同一个查询将根据它访问的数据库返回不同的结果
二级缓存的生存时间与会话工厂而不是单个会话相关联。一旦实体通过其唯一id加载且二级缓存处于活动状态,则该实体可用于(同一会话工厂的)所有其他会话
因
什么会导致更改不为现有实体生成update语句?我有一个命令更新实体上的状态枚举。它将其从活动更改为已删除。我使用相同的命令(一般)更新其他实体上的状态位,没有问题。我可以在不更改任何其他内容的情况下更新相关实体上的单个字符串,并且更新过程很好。我可以在NHProf中观察到这一切
我想我的问题是:
当一个枚举值(没有其他东西…或其他东西要更改?)被更改时,什么会导致NHibernate不更新一个实体
追踪此类问题的最佳方式是什么
谢谢你的帮助
线索。基类型上的属性为:
public virt
我的数据库中有一个现有的表,需要为它创建一个域来处理现有的数据
我有以下表格结构:
Application
'ORDERSCANNER'
ApplicationFunction
'ORDERSCANNER','SCAN'
'ORDERSCANNER','READ'
'ORDERSCANNER','PRINT'
FunctionalGroup
'ADMIN','RUS','ORDERSCANNER','SCAN'
'ADMIN','RUS','ORDERSCANNER','PRINT'
'AD
我有一个类MoneyCompositeUserType:ICompositeUserType
我在映射中这样使用:
public InvoiceMap()
{
Table("Invoices");
Id(x => x.Id);
Map(x => x.Customer);
Map(x => x.Number);
Map(x => x.TotalValue)
.CustomType(typeof(MoneyComposi
我有一个具有bool属性的实体A(我们称之为BProp)。
在第二个实体中,元素的包映射在BProp上具有where条件,如下所示:
<bag name="MyBag" cascade="all-delete-orphan" inverse="false" where="BProp = 1">
<key column="Structure_Id" />
<one-to-many entity-name="A" />
</bag>
当我将QueryOver与子查询列表一起使用时,出现以下编译错误:
“无法从用法推断方法‘xxxx’的类型参数。请尝试显式指定类型参数。”
以下是代码,但不确定如何更正:
List<QueryOver> subQueries = new List<QueryOver>();
subQueries.Add(QueryOver.Of<Customer>().Where(...));
subQueries.Add(QueryOver.Of&l
我想娶Unity3d和NHibernate。经过大量的魔法后,它在编辑器中工作,但在Windows standalone.exe中崩溃
我拥有的主要数据访问库:
MySql.Data.dll
I18N.dll
I18N.West.dll
System.Data.dll (2.0.5, for Unity)
NHibernate.dll (3.4.0)
win应用程序启动时的崩溃是:
TypeLoadException: Could not load type 'System.Data.Comm
我有一个c#控制台应用程序,可以将数据上传到Sitecore/UCommerce实现。它基于UCommerce UConnector。当我从命令行运行它时,它会毫无问题地执行,所有数据都正确上传和下载,没有错误。当我尝试安排此任务时,它将退出,并出现0xffffff错误。该任务指定一个命令行参数,该参数将应用程序设置为从app.Config
我搜索了这个错误,找到了很多我尝试过的建议,但是没有一个能解决这个问题。我尝试过的事情包括:
输入起始参数
正在检查具有最高权限的运行
正在将控制台应用程
我理解即使在读取数据时也应该使用显式事务,但我无法理解为什么下面的代码在NHibernate事务下运行要慢得多(而不是在没有它的情况下运行)
session.BeginTransaction();
var result=session.Query();
Commit();
如果需要的话,我可以发布更详细的UT代码,但如果我查询50000多条订单记录,在NHibernate的显式事务下运行此查询大约需要1秒,没有查询只需要15/20毫秒
更新日期:2019年1月15日
下面是详细的代码
[Te
我已经成功地使用NHibernate中的CommonLogging层,在以前使用hbm.xml文件的项目中使用NLog记录其内部消息。我现在切换到fluent mapping,NHibernate日志现在只包含一行:
[Log entry: Warn] 2019-02-01 13:30:42.5537 No mapped documents found in assembly: <assembly name>
我做错了什么?正如评论中所讨论的,log4net也适合您
以下是允许在N
1 2 3 4 5 6 ...
下一页 最后一页 共 180 页