本文整理汇总了C#中IPersistentCollection.EntryExists方法的典型用法代码示例。如果您正苦于以下问题:C# IPersistentCollection.EntryExists方法的具体用法?C# IPersistentCollection.EntryExists怎么用?C# IPersistentCollection.EntryExists使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IPersistentCollection
的用法示例。
在下文中一共展示了IPersistentCollection.EntryExists方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Recreate
public void Recreate(IPersistentCollection collection, object id, ISessionImplementor session)
{
if (!isInverse)
{
if (log.IsDebugEnabled)
{
log.Debug("Inserting collection: " + MessageHelper.InfoString(this, id));
}
try
{
// create all the new entries
IEnumerable entries = collection.Entries();
IExpectation expectation = Expectations.AppropriateExpectation(insertCheckStyle);
bool useBatch = expectation.CanBeBatched;
int i = 0;
int count = 0;
collection.PreInsert(this);
IDbCommand st = null;
foreach (object entry in entries)
{
if (collection.EntryExists(entry, i))
{
try
{
int offset = 0;
if (useBatch)
{
if (st == null)
{
st = session.Batcher.PrepareBatchCommand(
SqlInsertRowString.CommandType,
SqlInsertRowString.Text,
SqlInsertRowString.ParameterTypes);
}
}
else
{
st = session.Batcher.PrepareCommand(
SqlInsertRowString.CommandType,
SqlInsertRowString.Text,
SqlInsertRowString.ParameterTypes);
}
//offset += expectation.Prepare(st, factory.ConnectionProvider.Driver);
int loc = WriteKey(st, id, offset, session);
if (hasIdentifier)
{
loc = WriteIdentifier(st, collection.GetIdentifier(entry, i), loc, session);
}
if (hasIndex /*&&! !indexIsFormula */)
{
loc = WriteIndex(st, collection.GetIndex(entry, i), loc, session);
}
loc = WriteElement(st, collection.GetElement(entry), loc, session);
if (useBatch)
{
session.Batcher.AddToBatch(expectation);
}
else
{
expectation.VerifyOutcomeNonBatched(session.Batcher.ExecuteNonQuery(st), st);
}
collection.AfterRowInsert(this, entry, i);
count++;
}
catch (Exception e)
{
if (useBatch)
{
session.Batcher.AbortBatch(e);
}
throw;
}
finally
{
if (!useBatch)
{
session.Batcher.CloseCommand(st, null);
}
}
}
i++;
}
if (log.IsDebugEnabled)
{
log.Debug(string.Format("done inserting collection: {0} rows inserted", count));
}
if (count == 0 && log.IsDebugEnabled)
{
log.Debug("collection was empty");
}
}
catch (HibernateException)
{
// Do not call Convert on HibernateExceptions
throw;
//.........这里部分代码省略.........
示例2: Recreate
public void Recreate(IPersistentCollection collection, object id, ISessionImplementor session)
{
if (!isInverse && RowInsertEnabled)
{
if (log.IsDebugEnabled)
{
log.Debug("Inserting collection: " + MessageHelper.InfoString(this, id));
}
try
{
// create all the new entries
IEnumerator entries = collection.Entries(this).GetEnumerator();
if (entries.MoveNext())
{
entries.Reset();
IExpectation expectation = Expectations.AppropriateExpectation(insertCheckStyle);
collection.PreInsert(this);
//bool callable = InsertCallable;
bool useBatch = expectation.CanBeBatched;
int i = 0;
int count = 0;
while (entries.MoveNext())
{
object entry = entries.Current;
if (collection.EntryExists(entry, i))
{
object entryId;
if (!IsIdentifierAssignedByInsert)
{
// NH Different implementation: write once
entryId = PerformInsert(id, collection, expectation, entry, i, useBatch, false, session);
}
else
{
entryId = PerformInsert(id, collection, entry, i, session);
}
collection.AfterRowInsert(this, entry, i, entryId);
count++;
}
i++;
}
if (log.IsDebugEnabled)
{
log.Debug(string.Format("done inserting collection: {0} rows inserted", count));
}
}
else
{
if (log.IsDebugEnabled)
{
log.Debug("collection was empty");
}
}
}
catch (DbException sqle)
{
throw ADOExceptionHelper.Convert(sqlExceptionConverter, sqle,
"could not insert collection: " + MessageHelper.InfoString(this, id));
}
}
}
开发者ID:khaliyo,项目名称:Spring.net-NHibernate.net-Asp.net-MVC-DWZ-,代码行数:64,代码来源:AbstractCollectionPersister.cs
示例3: Recreate
public void Recreate(IPersistentCollection collection, object id, ISessionImplementor session)
{
if (!isInverse && RowInsertEnabled)
{
if (log.IsDebugEnabled)
{
log.Debug("Inserting collection: " + MessageHelper.InfoString(this, id));
}
try
{
// create all the new entries
IEnumerator entries = collection.Entries(this).GetEnumerator();
if (entries.MoveNext())
{
entries.Reset();
collection.PreInsert(this);
int i = 0;
int count = 0;
while (entries.MoveNext())
{
object entry = entries.Current;
if (collection.EntryExists(entry, i))
{
int offset = 0;
IDbCommand st;
IExpectation expectation = Expectations.AppropriateExpectation(insertCheckStyle);
//bool callable = InsertCallable;
bool useBatch = expectation.CanBeBatched;
if (useBatch)
{
st =
session.Batcher.PrepareBatchCommand(SqlInsertRowString.CommandType, SqlInsertRowString.Text,
SqlInsertRowString.ParameterTypes);
}
else
{
st =
session.Batcher.PrepareCommand(SqlInsertRowString.CommandType, SqlInsertRowString.Text,
SqlInsertRowString.ParameterTypes);
}
try
{
//offset += expectation.Prepare(st, factory.ConnectionProvider.Driver);
int loc = WriteKey(st, id, offset, session);
if (hasIdentifier && !isPostInsertIdentifier)
loc = WriteIdentifier(st, collection.GetIdentifier(entry, i), loc, session);
if (hasIndex)
loc = WriteIndex(st, collection.GetIndex(entry, i), loc, session);
WriteElement(st, collection.GetElement(entry), loc, session);
if (useBatch)
{
session.Batcher.AddToBatch(expectation);
}
else
{
expectation.VerifyOutcomeNonBatched(session.Batcher.ExecuteNonQuery(st), st);
}
collection.AfterRowInsert(this, entry, i);
count++;
}
catch (Exception e)
{
if (useBatch)
{
session.Batcher.AbortBatch(e);
}
throw;
}
finally
{
if (!useBatch)
{
session.Batcher.CloseCommand(st, null);
}
}
}
i++;
}
if (log.IsDebugEnabled)
{
log.Debug(string.Format("done inserting collection: {0} rows inserted", count));
}
}
else
{
if (log.IsDebugEnabled)
log.Debug("collection was empty");
}
}
catch (DbException sqle)
{
throw ADOExceptionHelper.Convert(sqlExceptionConverter, sqle,
"could not insert collection: " + MessageHelper.InfoString(this, id));
}
//.........这里部分代码省略.........