- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 2 个由 NHibernate 处理的类:AssetGroup、AssetAssetGroup 有一个 ISet _assets 集合。AssetGroup 的构造函数会说
_assets = new HashSet<Asset>();
我有一些操作要在 Assets 组中添加、删除 Assets
public abstract class Entity<Tid>
{
public virtual Tid Id { get; protected set; }
public override bool Equals(object obj)
{
return Equals(obj as Entity<Tid>);
}
public static bool IsTransient(Entity<Tid> obj)
{
return obj != null && Equals(obj.Id, default(Tid));
}
private Type GetUnproxiedType()
{
return GetType();
}
public virtual bool Equals(Entity<Tid> other)
{
if (other == null)
return false;
if (ReferenceEquals(this, other))
return true;
if (!IsTransient(this) && !IsTransient(other) && Equals(Id, other.Id))
{
var otherType = other.GetUnproxiedType();
var thisType = GetUnproxiedType();
return thisType.IsAssignableFrom(otherType) || otherType.IsAssignableFrom(thisType);
}
return false;
}
public override int GetHashCode()
{
if (Equals(Id, default(Tid)))
{
return base.GetHashCode();
}
else
{
return Id.GetHashCode();
}
}
}
///////////////////////////////////////
public class AssetGroup : Entity<int>
{
public AssetGroup()
{
this._assets = new HashedSet<Asset>();
}
virtual public Guid SecurityKey {get; set;}
virtual public string Name { get; set; }
private ISet<Asset> _assets;
virtual public ISet<Asset> Assets
{
get { return _assets; }
protected set { _assets = value; }
}
virtual public bool AddAsset(Asset asset)
{
if (asset != null && _assets.Add(asset))
{
return true;
}
return false;
}
virtual public bool RemoveAsset(Asset asset)
{
Asset target = null;
foreach (var a in _assets)
{
var x = a.GetHashCode();
var b = a.Equals(asset);
if (a.Equals(asset))
target = a;
}
if (target == null)
return false;
if (asset != null && _assets.Remove(target))
{
return true;
}
return false;
}
}
////////////////////////////////////////
public class Asset : Entity<int>
{
public Asset()
{
SecurityKey = Guid.NewGuid();
}
public virtual Guid SecurityKey { get; set; }
virtual public int AssetGroupID { get { return (AssetGroup != null ? AssetGroup.Id : 0); } }
virtual public string Name { get; set; }
virtual public AssetGroup AssetGroup { get; set;}
virtual public void SetAssetGroup(AssetGroup assetGroup)
{
AssetGroup prevRef = AssetGroup;
if (prevRef == assetGroup)
return;
AssetGroup = assetGroup;
if (prevRef != null)
prevRef.Assets.Remove(this);
if (assetGroup != null)
assetGroup.Assets.Add(this);
}
}
RemoveAsset 无法删除 Assets 。我有一个 foreach 来检查 Assets 是否存在于 _assets 中。我设置了断点来跟踪它,foreach 循环可以找到要被 RemoveAsset'ed 的 Assets (targe)。奇怪的是,当我要求 _assets 删除目标时。它无法删除并返回 false。此外,如果我询问 _assets.Contains(target) ..它也会返回 false ..即使 RemoveAsset 中的 foreach 循环可以找到目标...
两个nhibernate映射是
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="MySystem.Domain"
namespace="MySystem.Domain" auto-import="true">
有人可以帮助我吗?
最佳答案
你确定这是实际执行的代码吗?在我看来,即使您以某种故障方式重写 Equals 和 GetHashCode,一旦您发现 Assets 和目标被分配了来自 _assets 的对象,Remove 方法在使用目标调用时永远不会失败,因为它明确包含在集。我做了一个简短的测试,该集的行为符合预期。
关于nhibernate Iesi ISet 无法删除 (),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5040043/
最近我将 NHibernate 库升级到了最新版本 4.0.3.4000。之后 - 在编译期间我遇到了与“Iesi.Collections.Generic.ISet”相关的问题。从细节中我了解到 -
尝试 nHibernate,它说它找不到 Iesi.Collections。 我可以从哪里得到这个?如果它如此重要,它不应该与 nHibernate 下载一起提供吗? 最佳答案 NHibernate
我有 2 个由 NHibernate 处理的类:AssetGroup、AssetAssetGroup 有一个 ISet _assets 集合。AssetGroup 的构造函数会说 _assets =
我在标题中提到的映射中遇到了一些问题。以下是详细信息: class MyDomain { public Iesi.Collections.Generic.ISet MySomeTypes{ ge
该论坛上有许多与 Iesi.Collections 相关的帖子。我试图寻找我的问题的答案,但未能找到解决方案。 我是 nHibernate 和 Iesi.Collections 的新手。 我有一个客户
我有一个类型的集合: Iesi.Collections.Generic public ISet ItemBindings { get; set; } ItemBinding 是 Domain.Mode
在最新版本的 Iesi.Collections 中缺少 Iesi.Collections.Generic.ISet。似乎有三种选择: 链接哈希集 只读设置 同步集 Iesi.Collections.G
我对 NHibernate 非常陌生,所以如果我在这里遗漏了一些微不足道的东西,我深表歉意。我目前正在阅读 packtpub 的一本名为“NHibernate 3 初学者指南”的书。我主要是按照书中的
我已经尝试解决这个问题一天了,但一无所获,所以我希望有人可能已经解决了这个问题。我找到的最接近解决方案的是 How to simply map an NHibernate ISet to IList
.NET 4 ISet<> HashSet<> 可以替换 NHibernate Iesi.Collections ISet 、 HashSet 吗?我正在使用 CaSTLe 代理和 NHibernat
我是一名优秀的程序员,十分优秀!