- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在我的 NHibernate-DataAccess 中看到了这个警告:
'Disabled ghost property fetching for entity because it does not support lazy at the entity level'
有人知道,这是什么意思? - 我必须改变什么才能解决这个问题?
这是导致此警告的实体的映射:
public class BusinessTypeMap : ClassMap<BusinessType> {
public BusinessTypeMap() {
this.Table("BusinessType");
this.Version(x => x.ObjectVersion);
this.Id(x => x.Id).GeneratedBy.Assigned();
this.Map(x => x.Key).Length(8).Nullable();
this.Map(x => x.Name).Length(50).Not.Nullable();
this.Map(x => x.Comment).Length(8000).Nullable();
this.Map(x => x.Created).Not.Nullable().Not.OptimisticLock();
this.Map(x => x.CreatedBy).Length(255).Not.Nullable().Not.OptimisticLock();
this.Map(x => x.Changed).Nullable().Not.OptimisticLock();
this.Map(x => x.ChangedBy).Length(255).Nullable().Not.OptimisticLock();
this.HasMany(x => x.LocalizedProperties).AsSet().KeyColumn("EntityId").Where("LocalizedEntityClass = 'Prayon.Entities.BusinessType'").ForeignKeyConstraintName("none").Cascade.All();
this.HasMany(x => x.Companys).AsSet().KeyColumn("BusinessTypeId").Fetch.Select().Inverse().Cascade.None();
this.References(x => x.Client).Column("ClientId").Fetch.Select();
}
}
更新类 BusinessTypeBase 的定义:
[Serializable]
public abstract class BusinessTypeBase : AuditableEntityBase, ILocalizedEntity {
#region Private Variables
protected String key;
protected String name;
protected String comment;
#endregion
#region Constructors
protected BusinessTypeBase() {
this.LocalizedProperties = new HashSet<LocalizedProperty>();
OnCreated();
}
protected BusinessTypeBase(Guid id, String key, String name, String comment) {
this.LocalizedProperties = new HashSet<LocalizedProperty>();
this.id = id;
this.key = key;
this.name = name;
this.comment = comment;
OnCreated();
}
protected BusinessTypeBase(Guid id, String name) {
this.LocalizedProperties = new HashSet<LocalizedProperty>();
this.id = id;
this.name = name;
OnCreated();
}
#endregion
#region Puplic Properties
public virtual String Key {
get { return key; }
set {
if (this.key != value) {
this.OnKeyChanging(value);
this.key = value;
this.OnKeyChanged();
}
}
}
/// <summary>
/// @loc
/// </summary>
[Localize("Name")]
public virtual String Name {
get { return name; }
set {
if (this.name != value) {
this.OnNameChanging(value);
this.name = value;
this.OnNameChanged();
}
}
}
public virtual String NameLocalized {
get { return this.GetLocalized(x => x.Name); }
set {
if (this.NameLocalized != value) {
this.OnNameLocalizedChanging(value);
this.AddLocalizedProperty(x => x.Name, value);
this.OnNameLocalizedChanged();
if (string.IsNullOrEmpty(this.Name)) {
this.Name = value;
}
}
}
}
protected virtual void OnNameLocalizedChanging(String value) {
}
protected virtual void OnNameLocalizedChanged() {
}
[IgnoreForDeleteSerialization]
public virtual String Comment {
get { return comment; }
set {
if (this.comment != value) {
this.OnCommentChanging(value);
this.comment = value;
this.OnCommentChanged();
}
}
}
#endregion
#region Version
protected Int32 objectVersion;
public virtual Int32 ObjectVersion {
get { return objectVersion; }
set {
if (this.objectVersion != value) {
this.objectVersion = value;
}
}
}
#endregion
#region CollectionRules
public override string[] CollectionRules {
get { return collectionRules; }
}
private static readonly string[] collectionRules = new string[]
{
"Prayon.Entities.Client.BusinessTypes"
};
#endregion
#region Company Association
protected virtual void OnCompanysChanging(ICollection<Company> value) {
}
protected virtual void OnCompanysChanged() {
}
private ICollection<Company> companys = new HashSet<Company>();
[IgnoreForDeleteSerialization]
public virtual ICollection<Company> Companys {
get { return companys; }
set {
if (this.companys != value) {
this.OnCompanysChanging(value);
this.companys = value;
this.OnCompanysChanged();
}
}
}
#endregion
#region Client Association
public virtual Guid SerializableClient {
get { return (this.Client == null ? (this.SerializationProxies.ContainsKey("ClientId") ? this.SerializationProxies["ClientId"] : Guid.Empty) : this.Client.Id); }
set { this.SerializationProxies["ClientId"] = value; }
}
protected virtual void OnClientChanging(Client value) {
}
protected virtual void OnClientChanged() {
}
private Client client;
[IgnoreForDeleteSerialization]
public virtual Client Client {
get { return client; }
set {
if (this.client != value) {
this.OnClientChanging(value);
this.client = value;
this.OnClientChanged();
}
}
}
#endregion
#region ICloneable Members
///<summary>
/// Returns a Typed Copy of BusinessType
///</summary>
public virtual object Clone() {
BusinessType copy = new BusinessType();
copy.id = this.id;
copy.key = this.key;
copy.name = this.name;
copy.comment = this.comment;
return copy;
}
#endregion
#region Check Equality
/// <summary>
/// Check if the Passed Parameter is value equaled to this Address.
/// </summary>
/// <param name="obj">The Object will ba compared to.</param>
/// <returns>True if Equal else False</returns>
public override bool Equals(object obj) {
if (obj is BusinessTypeBase) {
var entity = obj as BusinessTypeBase;
if (entity.id != this.id)
return false;
if (entity.key != this.key)
return false;
if (entity.name != this.name)
return false;
if (entity.comment != this.comment)
return false;
return true;
}
return base.Equals(obj);
}
public override int GetHashCode() {
int hash = 0;
hash = hash ^ this.id.GetHashCode();
if (this.key != null) {
hash = hash ^ this.key.GetHashCode();
}
if (this.name != null) {
hash = hash ^ this.name.GetHashCode();
}
if (this.comment != null) {
hash = hash ^ this.comment.GetHashCode();
}
return hash;
}
public static bool operator ==(BusinessTypeBase obj1, BusinessTypeBase obj2) {
if (object.ReferenceEquals(obj1, null) && object.ReferenceEquals(obj2, null)) {
return true;
}
if (object.ReferenceEquals(obj1, null) || object.ReferenceEquals(obj2, null)) {
return false;
}
return obj1.Equals(obj2);
}
public static bool operator !=(BusinessTypeBase obj1, BusinessTypeBase obj2) {
return !(obj1 == obj2);
}
#endregion
#region To String
/// <summary>
/// override ToString to produce XML format of the current object
/// </summary>
public override string ToString() {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.AppendFormat("<Id>{0}</Id>{1}", this.id.ToString(), System.Environment.NewLine);
if (this.key != null)
stringBuilder.AppendFormat("<Key>{0}</Key>{1}", this.key.ToString(), System.Environment.NewLine);
if (this.name != null)
stringBuilder.AppendFormat("<Name>{0}</Name>{1}", this.name.ToString(), System.Environment.NewLine);
if (this.comment != null)
stringBuilder.AppendFormat("<Comment>{0}</Comment>{1}", this.comment.ToString(), System.Environment.NewLine);
return stringBuilder.ToString();
}
#endregion
#region Extensibility Method Definitions
protected virtual void OnCreated() {
}
protected virtual void OnKeyChanging(String value) {
}
protected virtual void OnKeyChanged() {
}
protected virtual void OnNameChanging(String value) {
}
protected virtual void OnNameChanged() {
}
protected virtual void OnCommentChanging(String value) {
}
protected virtual void OnCommentChanged() {
}
#endregion
#region Localization
public virtual ICollection<LocalizedProperty> LocalizedProperties { get; set; }
#endregion
}
更新类 BusinessType 的定义:
[Serializable]
public partial class BusinessType : BusinessTypeBase {
#region Constructors
public BusinessType()
: base() {
}
public BusinessType(Guid id, String key, String name, String comment)
: base(id, key, name, comment) {
}
public BusinessType(Guid id, String name)
: base(id, name) {
}
#endregion
}
最佳答案
你试过使用
*) Iesi.Collections.Generic.ISet<Company>
吗?而不是
ICollection<Company>
? IIRC、NHibernate 使用与 EF 或其他典型库不同的接口(interface)集。一般的问题是 ICollection 在这里是非常糟糕的契约(Contract),因为它没有说明“SET”行为,而实际上每个关系都是。
编辑:*) 我才发现我错了,NH可以配合ICollection接口(interface)(https://stackoverflow.com/a/4673125/717732)。您仍然可以尝试使用 ISet 或 HashSet,但我现在怀疑这是问题所在,抱歉:/
关于c# - 'Disabled ghost property fetching for <entity> because it does not support lazy at the entity level'的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15108480/
您好,下面是我在 AWS 中创建启用了弹性 IP 的实例的模板。但是我不确定我哪里出错了。我已经通过在线 json 验证器验证了 json,仍然面临问题请帮忙 { "AWSTemplateForm
标题有点乱,但已经说明了一切。我想在一个属性的属性上有一个属性观察器: class A { var b: B init() { b = B() } fu
假设我的一个 Controller 中有这样的方法: [Route("api/Products")] public IQueryable GetProducts() { return db.P
这有效: // @flow import React, {Component} from 'react'; type Props = {}; class Delete extends Componen
我有一个 ViewModelBase 类,我在其中为 INotifyPropertyChanged 接口(interface)定义了 RaisePropertyChanged 方法。大多数 MVVM
我创建了类: class StorageBase { public Queue Slices {get;set;} } 和 wpf 自定义控件,它具有 StorageBase 类型的依赖属性
我的 java 应用程序问题是 log4j2 系统日志不是写在 'local1.log' 中而是'消息'。我的/etc/rsyslog.conf 在/etc/rsyslog.conf 中配置为 'lo
为什么需要在对象中使用 this.property = property ?它是用来定义对象的“外部世界”的属性吗? function Person(property) { this.property
摘要: 这个问题是关于属性的继承与从彼此继承属性的类的内部和外部的不同读/写访问相结合。 详细信息: 我有一个类 A 和另一个继承自 A 的类 B。 A 中声明了属性someProperty。我希望该
我正在开发 ASP.NET MVC 应用,设计域模型,使用(测试)新的 EF Code First 功能。 我有一个可能有也可能没有截止日期的事件实体,处理它的最佳方法是什么? 1 个属性: publ
我在配置项目时经常使用它们,但大多数情况下都是按照指示添加 fragment 。我完全不知道哪个文件到底是做什么的。谁能清楚地说明每个文件的用途。 到目前为止我认为 local.properties
在运行 python 文件以使用 rasa nlu 训练文件时,我在命令提示符下收到此错误 我目前正在使用 Windows 10 rasa_core==0.8.2 rasa_nlu==0.11.4 p
我在这方面遇到了一些麻烦,尽管我已经搜索了答案,但还是找不到。 为了使用 AsyncAppender,我看到了很多不同的 log4j 配置,无论如何,它们都与 .properties 配置文件无关。
我正在编写一个 Python 类,并使用 @property 装饰器为该类创建属性。 我在文档中没有找到太多关于这个装饰器的信息,但是从我可以从 Stack Overflow 和我的 Python l
在 gradle 任务中,我可以创建这样的路径: System.env.FOLDER_PATH + '/subFolder' 但我想在我的 gradle.properties 中设置它,所以它会像 s
如何在属性文件的 log4j2 中创建键值对? 我知道在 log4j 版本 1 中它是这样完成的: log4j.appender.x.additionalFields={'key': 'value'}
我想通了 struct PropertyTest { @property int x() { return val; } @property void x( int newVal )
我有 REST (Jersey) webservice,它利用了一些编码/解码到/来自 XML 的数据对象。数据对象位于 webservice war 所依赖的单独项目/jar 中。 我使用 MOXy
我正在创建一个 LinkedList 类: function LinkedList(){ ... 有什么区别: this.addNode = function(data){
关于语义的快速问题:) 如果我正在编写一个协议(protocol),这是首选: // (a) @protocol MyProtocol @property (nonatomic, copy) NSSe
我是一名优秀的程序员,十分优秀!