Обновление : спасибо за ответы. Удаленное предположение о копии на записи.
Еще одно различие между {}
и dict
- то, что dict
всегда выделяет новый словарь (даже если содержание статично), тогда как {}
не делает всегда , делают так (см. ответ mgood для когда и почему):
def dict1():
return {'a':'b'}
def dict2():
return dict(a='b')
print id(dict1()), id(dict1())
print id(dict2()), id(dict2())
производит:
$ ./mumble.py 11642752 11642752 11867168 11867456
я не предлагаю, чтобы Вы попытались использовать в своих интересах это или нет, это зависит от конкретной ситуации, просто указав на это. (Также, вероятно, очевидно из дизассемблирование , если Вы понимаете коды операций).
Попробуйте использовать NHibernate.ISession.CreateSQLQuery (string queryString)
private NHibernate.ISession session; // Initialized somewhere
public void ExecuteSQLFile(string sqlFilePath)
{
string sqlScript;
using (FileStream strm = File.OpenRead(sqlFilePath))
{
var reader = new StreamReader(strm);
sqlScript = reader.ReadToEnd();
}
var regex = new Regex("^GO", RegexOptions.IgnoreCase | RegexOptions.Multiline);
string[] lines = regex.Split(sqlScript);
foreach (string line in lines)
{
IQuery query = session.CreateSQLQuery(line);
query.ExecuteUpdate();
}
}
Вот документация: Глава 16. Собственный SQL
Нет ничего плохого в использовании простого ADO.NET для вставки данных в базу данных при тестировании интеграции. Для пакетных вставок это даже лучше, чем NHibernate. То, как вы переводите свою базу данных в известное состояние для тестирования, не имеет большого значения, важно проверить, как вы получаете доступ к своим данным в приложении.