是否有任何互联网资源对NHibernate的所有级联设置有明确的指导,其中包括类结构,HBM的示例以及与NH的所有关系的每个级联设置的动作的含义.
如果有以最正确的方式进行公共关联的示例,例如设置状态表,您将永远不会最终级联删除状态,或者删除具有CreatedBy用户属性的对象,那么它将会很有用.永远不会在级联等中删除用户
我正在尝试让NHibernate使用集合的许多方面来管理双向关联以建立零对一关系.
父类和地图:
public class Parent
{
private ICollection<Child> children;
public Parent()
{
this.children = new HashedSet<Child>();
}
public virtual Guid Id { get; protected internal set; }
public virtual Child Child
{
get { return children.FirstOrDefault(); }
set
{
{
this.children.Clear();
if (value != null)
{
this.children.Add(value);
}
}
}
}
}
public class ParentMap : ClassMap<Parent>
{
public ParentMap()
{
this.Id(x => x.Id)
.GeneratedBy.GuidComb();
this.HasMany<Child>(Reveal.Member<Parent>("children"))
.Access.Field()
.Cascade.All()
.Not.Inverse()
.AsSet();
}
}
Run Code Online (Sandbox Code Playgroud)
儿童班和地图:
public class Child
{
public virtual Guid …Run Code Online (Sandbox Code Playgroud) 有这样的LINQ查询的NHibernate存储库
var q = from x in SomeIQueryable<SomeEntity> where x.A1 == a1 && x.B1 == b1 select x;
Run Code Online (Sandbox Code Playgroud)
有没有一个解决方案如何获得这个WHERE过滤器并将其应用于"一次性删除",这似乎只能通过HQL实现:
var cmd = string.Format("delete from SomeEntity where x.A1 = '{0}' and x.B1 = {1}", a1, b1);
session.CreateQuery(cmd).ExecuteUpdate();
Run Code Online (Sandbox Code Playgroud) 我是Hibernate世界的新手.这可能是一个愚蠢的问题,但我无法解决它.我正在测试表的多个到一个关系并试图插入记录.我有一个Department表和Employee表.员工和部门在这里有多对一的关系.我正在使用Fluent NHibernate添加记录.以下所有代码.请帮忙
SQL代码
create table Dept (
Id int primary key identity,
DeptName varchar(20),
DeptLocation varchar(20)
);
create table Employee (
Id int primary key identity,
EmpName varchar(20),
EmpAge int,
DeptId int references Dept(Id)
);
Run Code Online (Sandbox Code Playgroud)
类文件
public partial class Dept
{
public virtual System.String DeptLocation { get; set; }
public virtual System.String DeptName { get; set; }
public virtual System.Int32 Id { get; private set; }
public virtual IList<Employee> Employees { get; set; }
}
public partial class Employee
{ …Run Code Online (Sandbox Code Playgroud) 我有一对多关系的问题.我有以下域类:
public class Installation : Entity<Installation>
{
public virtual string Name { get; set; }
public virtual IList<Institution> Institutions { get; set; }
public Installation()
{
Institutions = new List<Institution>();
}
}
public class Institution : Entity
{
public virtual string Name { get; set; }
public virtual string Address { get; set; }
public virtual string City { get; set; }
public virtual Installation Installation { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我根据以下帖子制作了Entity基类.我定义了以下映射:
public class InstitutionMapping : ClassMap<Institution>
{ …Run Code Online (Sandbox Code Playgroud) 我有一个Parent类,有两个Child类列表
public class Parent
{
...
public virtual ICollection<Foo> Foo{ get; set; }
public virtual ICollection<Bae> Bar{ get; set; }
}
public class Foo
{
...
public virtual Parent Parent{ get; set; }
}
public class Bar
{
...
public virtual Parent Parent{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
映射是
public ParentMap()
{
...
HasMany(m => m.Foo).AsSet().Cascade.All();
HasMany(m => m.Bar).AsSet().Cascade.All();
}
public FooMap()
{
...
References(m => m.Parent);
}
public BarMap()
{
...
References(m => m.Parent);
}
Run Code Online (Sandbox Code Playgroud)
每当我保存父对象时,我得到
INSERT Parent ...
INSERT …Run Code Online (Sandbox Code Playgroud) nhibernate nhibernate-mapping fluent-nhibernate fluent-nhibernate-mapping