pan*_*ang 40 fluent-nhibernate
我是流利的NHibernate的新手.现在我遇到映射复合键的一个问题.任何人都可以指出URL或样品吗?
Jam*_*ory 50
有一种CompositeId方法.
public class EntityMap : ClassMap<Entity>
{
public EntityMap()
{
CompositeId()
.KeyProperty(x => x.Something)
.KeyReference(x => x.SomethingElse);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
如果这是你的第一堂课
public class EntityMap : ClassMap<Entity>
{
public EntityMap()
{
UseCompositeId()
.WithKeyProperty(x => x.Something)
.WithReferenceProperty(x => x.SomethingElse);
}
}
Run Code Online (Sandbox Code Playgroud)
这是第二个参考实体
public class SecondEntityMap : ClassMap<SecondEntity>
{
public SecondEntityMap()
{
Id(x => x.Id);
....
References<Entity>(x => x.EntityProperty)
.WithColumns("Something", "SomethingElse")
.LazyLoad()
.Cascade.None()
.NotFound.Ignore()
.FetchType.Join();
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
另一件要注意的事情是,您必须使用 CompositeId 覆盖实体的 Equals 和 GetHashCode 方法。鉴于接受的答案映射文件,您的实体将如下所示。
public class Entity
{
public virtual int Something {get; set;}
public virtual AnotherEntity SomethingElse {get; set;}
public override bool Equals(object obj)
{
var other = obj as Entity;
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return other.SomethingElse == SomethingElse && other.Something == Something;
}
public override int GetHashCode()
{
unchecked
{
return (SomethingElse.GetHashCode()*397) ^ Something;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30642 次 |
| 最近记录: |