本文整理汇总了C#中Relation.GetOtherEnd方法的典型用法代码示例。如果您正苦于以下问题:C# Relation.GetOtherEnd方法的具体用法?C# Relation.GetOtherEnd怎么用?C# Relation.GetOtherEnd使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Relation
的用法示例。
在下文中一共展示了Relation.GetOtherEnd方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Call
public static void Call(Arebis.CodeGeneration.IGenerationHost host,
IZetboxContext ctx,
Templates.Serialization.SerializationMembersList serializationList,
Relation rel, RelationEndRole endRole, string backingCollectionType)
{
if (host == null) { throw new ArgumentNullException("host"); }
if (rel == null) { throw new ArgumentNullException("rel"); }
RelationEnd relEnd = rel.GetEndFromRole(endRole);
RelationEnd otherEnd = rel.GetOtherEnd(relEnd);
string name = relEnd.Navigator.Name;
string exposedCollectionInterface = rel.NeedsPositionStorage(otherEnd.GetRole()) ? "IList" : "ICollection";
string referencedInterface = otherEnd.Type.GetDataTypeString();
string backingName = "_" + name;
string aSideType = rel.A.Type.GetDataTypeString();
string bSideType = rel.B.Type.GetDataTypeString();
string entryType = rel.GetRelationFullName() + host.Settings["extrasuffix"] + Zetbox.API.Helper.ImplementationSuffix;
string providerCollectionType = (rel.NeedsPositionStorage(otherEnd.GetRole()) ? "IList<" : "ICollection<")
+ entryType + ">";
bool eagerLoading = relEnd.Navigator != null && relEnd.Navigator.EagerLoading;
bool serializeRelationEntries = rel.GetRelationType() == RelationType.n_m;
string entryProxyType = entryType + "." + rel.GetRelationClassName() + "Proxy";
string inverseNavigatorName = otherEnd.Navigator != null ? otherEnd.Navigator.Name : null;
Call(host, ctx, serializationList, name, exposedCollectionInterface, referencedInterface, backingName, backingCollectionType, aSideType, bSideType, entryType, providerCollectionType, rel.ExportGuid, endRole, eagerLoading, serializeRelationEntries, entryProxyType, inverseNavigatorName);
}
示例2: ApplyObjectReferenceProperty
protected override void ApplyObjectReferenceProperty(Relation rel, RelationEndRole endRole, string propertyName)
{
// TODO: create/use ObjectReference*IMPLEMENTATION* instead (_fk* can already be made available)
RelationEnd relEnd = rel.GetEndFromRole(endRole);
RelationEnd otherEnd = rel.GetOtherEnd(relEnd);
string moduleNamespace = rel.Module.Namespace;
string implName = propertyName + Zetbox.API.Helper.ImplementationSuffix;
string eventName = "On" + propertyName;
string fkBackingName = "_fk_" + propertyName;
string fkGuidBackingName = "_fk_guid_" + propertyName;
string referencedInterface = relEnd.Type.GetDataTypeString();
string referencedImplementation = referencedInterface
+ Host.Settings["extrasuffix"] + Zetbox.API.Helper.ImplementationSuffix;
string associationName = rel.GetAssociationName() + "_" + endRole.ToString();
string targetRoleName = relEnd.RoleName;
string positionPropertyName = rel.NeedsPositionStorage(endRole)
? propertyName + Zetbox.API.Helper.PositionSuffix
: null;
string inverseNavigatorName = relEnd.Navigator != null
? relEnd.Navigator.Name + Zetbox.API.Helper.ImplementationSuffix
: null;
bool inverseNavigatorIsList = false;
bool notifyInverseCollection = true;
bool eagerLoading = relEnd.Navigator != null && relEnd.Navigator.EagerLoading;
bool relDataTypeExportable = rel.A.Type.ImplementsIExportable() && rel.B.Type.ImplementsIExportable();
bool callGetterSetterEvents = false;
Templates.Properties.ObjectReferencePropertyTemplate.Call(Host,
ctx,
MembersToSerialize,
moduleNamespace,
"/* not member of an interface, 'ownInterface' should not be used */",
propertyName,
implName,
eventName,
fkBackingName,
fkGuidBackingName,
referencedInterface,
referencedImplementation,
associationName,
targetRoleName,
positionPropertyName,
inverseNavigatorName,
inverseNavigatorIsList,
notifyInverseCollection,
eagerLoading,
relDataTypeExportable,
callGetterSetterEvents,
false, // ObjRef with relation cannot be calculated
false);
}
示例3: ProcessRelationEnd
private void ProcessRelationEnd(Relation rel, RelationEnd relEnd)
{
var otherEnd = rel.GetOtherEnd(relEnd);
string columnName = Construct.ForeignKeyColumnName(otherEnd, prefix);
bool needPositionStorage = rel.NeedsPositionStorage(relEnd.GetRole());
string positionColumnName = Construct.ListPositionColumnName(otherEnd, prefix);
GenerateProperty(
columnName,
needPositionStorage,
positionColumnName);
}
示例4: ApplyObjectReferenceProperty
protected override void ApplyObjectReferenceProperty(Relation rel, RelationEndRole endRole, string propertyName)
{
RelationEnd relEnd = rel.GetEndFromRole(endRole);
RelationEnd otherEnd = rel.GetOtherEnd(relEnd);
// TODO: create/use ObjectReference*IMPLEMENTATION* instead (_fk* can already be made available)
string moduleNamespace = rel.Module.Namespace;
string ownInterface = moduleNamespace + "." + rel.GetRelationClassName() + ImplementationSuffix;
string name = propertyName;
string implName = propertyName + ImplementationPropertySuffix;
string eventName = "On" + name;
string fkBackingName = "_fk_" + name;
string fkGuidBackingName = "_fk_guid_" + name;
string referencedInterface = relEnd.Type.GetDataTypeString();
string referencedImplementation = referencedInterface + ImplementationSuffix;
string associationName = rel.GetAssociationName();
string targetRoleName = otherEnd.RoleName;
string positionPropertyName = rel.NeedsPositionStorage(endRole)
? name + Zetbox.API.Helper.PositionSuffix
: null;
string inverseNavigatorName = null; // do not care about inverse navigator
bool inverseNavigatorIsList = false;
bool eagerLoading = relEnd.Navigator != null && relEnd.Navigator.EagerLoading;
bool relDataTypeExportable = rel.A.Type.ImplementsIExportable() && rel.B.Type.ImplementsIExportable();
bool callGetterSetterEvents = false;
Properties.ObjectReferencePropertyTemplate.Call(Host,
ctx,
MembersToSerialize,
moduleNamespace,
ownInterface,
name,
implName,
eventName,
fkBackingName,
fkGuidBackingName,
referencedInterface,
referencedImplementation,
associationName,
targetRoleName,
positionPropertyName,
inverseNavigatorName,
inverseNavigatorIsList,
eagerLoading,
relDataTypeExportable,
callGetterSetterEvents,
false,
false);
}
示例5: Call
public static void Call(Arebis.CodeGeneration.IGenerationHost host,
IZetboxContext ctx,
Serialization.SerializationMembersList serializationList,
string ownInterface,
string name,
string referencedInterface,
Relation rel,
RelationEndRole endRole,
bool callGetterSetterEvents,
bool updateInverseNavigator,
string assocNameSuffix)
{
// TODO: split off relation expansion in own Call() method
RelationEnd relEnd = rel.GetEndFromRole(endRole);
RelationEnd otherEnd = rel.GetOtherEnd(relEnd);
string moduleNamespace = rel.Module.Namespace;
string implName = name + Zetbox.API.Helper.ImplementationSuffix;
string eventName = "On" + name;
string fkBackingName = "_fk_" + name;
string fkGuidBackingName = "_fk_guid_" + name;
string referencedImplementation = referencedInterface
+ host.Settings["extrasuffix"] + Zetbox.API.Helper.ImplementationSuffix;
string associationName = rel.GetAssociationName() + assocNameSuffix;
string targetRoleName = otherEnd.RoleName;
string positionPropertyName = rel.NeedsPositionStorage(endRole)
? Construct.ListPositionPropertyName(relEnd)
: null;
string inverseNavigatorName = updateInverseNavigator && otherEnd.Navigator != null
? otherEnd.Navigator.Name
: null;
bool inverseNavigatorIsList = otherEnd.Navigator != null && otherEnd.Navigator.GetIsList();
bool eagerLoading = relEnd.Navigator != null && relEnd.Navigator.EagerLoading;
bool relDataTypeExportable = rel.A.Type.ImplementsIExportable() && rel.B.Type.ImplementsIExportable();
Call(host,
ctx,
serializationList,
moduleNamespace,
ownInterface,
name,
implName,
eventName,
fkBackingName,
fkGuidBackingName,
referencedInterface,
referencedImplementation,
associationName,
targetRoleName,
positionPropertyName,
inverseNavigatorName,
inverseNavigatorIsList,
eagerLoading,
relDataTypeExportable,
callGetterSetterEvents,
false, // ObjRef with relation cannot be calculated
false);
}
示例6: ApplyRememberToDeleteTemplate
private void ApplyRememberToDeleteTemplate(Relation rel, RelationEnd relEnd)
{
if (rel.GetOtherEnd(relEnd).Multiplicity == Multiplicity.ZeroOrMore)
{
if (relEnd.Navigator != null)
{
var prop = relEnd.Navigator;
this.WriteObjects(" // ", rel.GetAssociationName(), " ZeroOrMore\r\n");
this.WriteObjects(" foreach(NHibernatePersistenceObject x in ", prop.Name, ") {\r\n");
this.WriteObjects(" x.ParentsToDelete.Add(this);\r\n");
this.WriteObjects(" ChildrenToDelete.Add(x);\r\n");
this.WriteObjects(" }\r\n");
}
else
{
this.WriteObjects(" // should fetch && remember parent for ", relEnd.Parent.GetRelationClassName(), "\r\n");
}
}
else
{
if (relEnd.Navigator != null)
{
var prop = relEnd.Navigator;
this.WriteObjects(" // ", rel.GetAssociationName(), "\r\n");
this.WriteObjects(" if (", prop.Name, " != null) {\r\n");
this.WriteObjects(" ((NHibernatePersistenceObject)", prop.Name, ").ChildrenToDelete.Add(this);\r\n");
this.WriteObjects(" ParentsToDelete.Add((NHibernatePersistenceObject)", prop.Name, ");\r\n");
this.WriteObjects(" }\r\n");
}
else
{
this.WriteObjects(" // should fetch && remember children for ", relEnd.Parent.GetRelationClassName(), "\r\n");
}
}
}
示例7: Check_1_1_RelationColumns
private void Check_1_1_RelationColumns(Relation rel, RelationEnd relEnd, RelationEndRole role)
{
if (rel.HasStorage(role))
{
var tblName = relEnd.Type.GetTableRef(db);
RelationEnd otherEnd = rel.GetOtherEnd(relEnd);
var refTblName = otherEnd.Type.GetTableRef(db);
string colName = Construct.ForeignKeyColumnName(otherEnd);
string assocName = rel.GetRelationAssociationName(role);
string idxName = Construct.IndexName(tblName.Name, colName);
var realIsNullable = otherEnd.IsNullable();
if (realIsNullable == false)
realIsNullable = relEnd.Type.GetTableMapping() == TableMapping.TPH && relEnd.Type.BaseObjectClass != null;
CheckColumn(tblName, Construct.ForeignKeyColumnName(otherEnd), System.Data.DbType.Int32, 0, 0, realIsNullable, null);
if (!db.CheckFKConstraintExists(tblName, assocName))
{
Log.WarnFormat("FK Constraint '{0}' is missing", assocName);
if (repair)
{
db.CreateFKConstraint(tblName, refTblName, colName, assocName, false);
}
}
if (!db.CheckIndexExists(tblName, idxName))
{
Log.WarnFormat("Index '{0}' is missing", idxName);
if (repair)
{
db.CreateIndex(tblName, idxName, true, false, colName);
}
}
}
}
示例8: Call
/// <summary>
///
/// </summary>
/// <param name="host"></param>
/// <param name="ctx"></param>
/// <param name="serializationList"></param>
/// <param name="name">the name of the property to create</param>
/// <param name="wrapperClass">the name of the wrapper class for wrapping the EntityCollection</param>
/// <param name="exposedListType">which generic interface to use for the collection (IList or ICollection)</param>
/// <param name="rel"></param>
/// <param name="endRole"></param>
/// <param name="positionPropertyName">the name of the position property for this list</param>
public static void Call(Arebis.CodeGeneration.IGenerationHost host,
IZetboxContext ctx,
Serialization.SerializationMembersList serializationList,
string name,
string wrapperClass,
string exposedListType,
Relation rel,
RelationEndRole endRole,
string positionPropertyName)
{
if (rel == null) { throw new ArgumentNullException("rel"); }
RelationEnd relEnd = rel.GetEndFromRole(endRole);
RelationEnd otherEnd = rel.GetOtherEnd(relEnd);
string wrapperName = "_" + name;
var otherName = otherEnd.Navigator == null ? relEnd.RoleName : otherEnd.Navigator.Name;
string referencedInterface = otherEnd.Type.GetDataTypeString();
Call(host, ctx, serializationList, name, wrapperName, wrapperClass, exposedListType, rel, endRole, positionPropertyName, otherName, referencedInterface);
}
示例9: Check_1_1_RelationColumns
private void Check_1_1_RelationColumns(Relation rel, RelationEnd relEnd, RelationEndRole role)
{
if (rel.HasStorage(role))
{
var tblName = db.GetTableName(relEnd.Type.Module.SchemaName, relEnd.Type.TableName);
RelationEnd otherEnd = rel.GetOtherEnd(relEnd);
var refTblName = db.GetTableName(otherEnd.Type.Module.SchemaName, otherEnd.Type.TableName);
string colName = Construct.ForeignKeyColumnName(otherEnd);
string assocName = rel.GetRelationAssociationName(role);
string idxName = Construct.IndexName(tblName.Name, colName);
CheckColumn(tblName, Construct.ForeignKeyColumnName(otherEnd), System.Data.DbType.Int32, 0, 0, otherEnd.IsNullable(), null);
if (!db.CheckFKConstraintExists(tblName, assocName))
{
Log.WarnFormat("FK Constraint '{0}' is missing", assocName);
if (repair)
{
db.CreateFKConstraint(tblName, refTblName, colName, assocName, false);
}
}
if (!db.CheckIndexExists(tblName, idxName))
{
Log.WarnFormat("Index '{0}' is missing", idxName);
if (repair)
{
db.CreateIndex(tblName, idxName, true, false, colName);
}
}
}
}