我正在开始一个新项目,我想使用NHibernate 3.2.我知道它现在可以做类似于FluentNHibernate的事情,我想尝试一下.
但是我很难找到关于Loquacious API的文档.我已经看过关于如何配置ISessionFactory的博客 文章,但在此之后我就迷路了.我知道3.2 API正在快速发展,大约3到4个月的文章已经过时,但我正在寻找最新的信息.
我在哪里可以找到有关的资源:
如何在不使用FluentNHibernate且不使用ConfORM的情况下设置NHibernate 3.2而不使用XML?
如何注册映射?
如何创建约定?
请记住,这与NHibernate 3.2(可能在上面)有关.如果映射和约定等任何概念不再适用,请您指出正确的方向吗?
我对NHibernate和FluentNHibernate有一些经验,因为我将它们用于一个小项目,但它并不是很复杂.
我们在NHibernate中遇到间歇性问题,它偶尔会在SQL上生成一个错误列的查询.如果我们重新启动应用程序,则问题不再发生(有时需要多次重启).出现问题时,在该进程的生命周期内,它始终会为受影响的实体生成错误的SQL.它并不总是受影响的实体.
这是一个ASP.NET应用程序,其中SessionFactory是在Application_Start事件期间创建的.所有配置和映射都是通过代码完成的.
我们没有更多的想法如何测试或调试应用程序,我开始假设NHibernate中有一些错误,因为应用程序在重新启动时自行修复.任何想法/提示将不胜感激!
这是一个例子:
实体
namespace Example.Clinicas
{
public partial class Clinica : Entidade // Abstract base class that has a property Handle
{
public virtual string Ddd { get; set; }
public virtual string Ddd2 { get; set; }
public virtual long? Duracao { get; set; }
public virtual string Numero { get; set; }
public virtual string Numero2 { get; set; }
public virtual string Prefixo { get; set; }
public virtual string Prefixo2 { get; …Run Code Online (Sandbox Code Playgroud) 我正在努力学习NHibernate 3.2 built-in mapping by code api(不是 FluentNHibernate,也不是xml).你能帮我勾画出这些实体之间的多对多关系吗?
public class Post {
public virtual Id { get; set; }
public IList<Tag> Tags { get; set; }
}
public class Tag {
public virtual Id { get; set; }
public IList<Post> Posts { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的主要关键策略是:
Id(
t => t.Id,
t => {
t.Generator(Generators.HighLow, g => g.Params(new { max_low = 100 }));
t.Column(typeof(TEntity).Name + "Id");
});
Run Code Online (Sandbox Code Playgroud)
我试试这个:
// TagMap : ClassMapping<Tag>
Bag(t => t.Posts, bag => …Run Code Online (Sandbox Code Playgroud) mapping nhibernate many-to-many nhibernate-3 nhibernate-mapping-by-code
我试图将属性映射到另一个表的任意列.文档说公式可以是任意SQL,我看到的例子显示类似.
但是,SQL NHibernate生成的甚至不是有效的.公式中的整个SQL语句被注入SELECT语句的中间.
Property(x => x.Content, map =>
{
map.Column("Content");
map.Formula("select 'simple stuff' as 'Content'");
});
Run Code Online (Sandbox Code Playgroud) 我有几个项目使用NH和FNH生成映射(一些Fluent一些Automapped).我仍然需要一些bug和缺少的功能,但似乎FNH可能因为集成到NHibernate中的代码映射而死亡.
问题:有助于FNH或将映射迁移到代码映射或confORM并修复问题/实现功能吗?
nhibernate nhibernate-mapping fluent-nhibernate nhibernate-mapping-by-code fluent-nhibernate-mapping
有没有关于如何在线使用这个(NHibernate.Criterion.IdentifierEqExpression)的好例子?我找不到任何东西.我对你应该传递给构造函数的内容感到有点困惑.
我传入一个1的int32,我一直认为我的测试应该基本上做一个"where id = 1"类型的查询,而不是用"where id =?"来爆发 和位置参数的东西.如果那不是应该传递给构造函数的......那是什么?
实际问题
当我查看SQL输出时,似乎工作正常,除了我的表名为User并且NHibernate没有像[User]那样封闭它.有什么方法可以强迫这个?
.net nhibernate nhibernate-mapping-by-code fluent-nhibernate-mapping
当引用列不是第二个表上的主键列时,我试图找出一种在 nhibernate 中映射一对一关系的方法。
\n\n例如考虑
\n\nPerson Table \n PersonId (pk)\n Name\nRun Code Online (Sandbox Code Playgroud)\n\n和
\n\nPassport Table \n PassportId (pk)\n Country\n PersonId\nRun Code Online (Sandbox Code Playgroud)\n\n这两个表在 PersonId 上具有一对一的关系。
\n\n我的 Nhibernate 模型如下所示。
\n\npublic class Person\n{\n public virtual int Id { get; set; }\n public virtual string Name { get; set; }\n public virtual Passport Passport { get; set; }\n}\n\npublic class Passport\n{\n public virtual int Id { get; set; }\n public virtual string Country { get; set; }\n public virtual Person Person …Run Code Online (Sandbox Code Playgroud) c# sql nhibernate fluent-nhibernate nhibernate-mapping-by-code
花了一段时间才找到答案,以为我会分享爱情.
当使用NHibernate通过代码与SQL Server的新映射时,我无法保存实体.保存实体时,将抛出System.Data.SqlClient.SqlException并显示以下消息(减去表名):
"当IDENTITY_INSERT设置为OFF时,无法在表'DietUser'中为标识列插入显式值."
我的表使用身份ID,实体和映射看起来像这样:
public class User
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual string Username { get; set; }
public virtual string Password { get; set; }
public virtual short DailyPoints { get; set; }
}
public class UserMapping : ClassMapping<User>
{
public UserMapping()
{
Id(x => x.Id);
Property(x => x.Name);
Property(x => x.Username);
Property(x => x.Password);
Property(x => x.DailyPoints);
}
}
Run Code Online (Sandbox Code Playgroud)
我知道如何使用XML映射来映射它,但我希望尽可能使用代码内置的映射.
sql-server nhibernate nhibernate-mapping nhibernate-mapping-by-code
我需要使用NHibernate 3.2中的代码映射映射来映射表的ntext列,这样它就不会被截断为4000个字符.
在以下示例中,我要更改哪些内容?"Notes"是在sql表中具有ntext类型的属性:
属性(emp => emp.Notes);
注意:请不要将它与流畅的NHibernate或hbm文件映射混合使用.
nhibernate truncate ntext nhibernate-mapping nhibernate-mapping-by-code
我可以使用以下代码序列化代理对象:
public class NHibernateContractResolver : DefaultContractResolver
{
protected override JsonContract CreateContract(Type objectType)
{
if (typeof(NHibernate.Proxy.INHibernateProxy).IsAssignableFrom(objectType))
return base.CreateContract(objectType.BaseType);
return base.CreateContract(objectType);
}
}
Run Code Online (Sandbox Code Playgroud)
但是我怎样才能在序列化过程中JSON.NET忽略对象呢?NHibernate Proxy
我面临的问题是,父对象正在获取 1000 个子对象,因为我只想为父对象发送 JSON,所以我想忽略代理对象并仅获取急切加载的关系。
如果我对上面的代码进行注释,则会收到 JSON.NET 无法序列化代理对象的错误。
请帮忙!
nhibernate ×10
nhibernate-mapping-by-code ×10
c# ×4
.net ×2
sql ×2
json.net ×1
many-to-many ×1
mapping ×1
nhibernate-3 ×1
ntext ×1
properties ×1
sql-server ×1
truncate ×1