Вот то, что я делаю для любого действия, и оно работает в Firefox, IE, Opera и Safari.
<script type="text/javascript">
$(document).ready(function(){
doMethod();
});
function actionIframe(iframe)
{
... do what ever ...
}
function doMethod()
{
var iFrames = document.getElementsByTagName('iframe');
// what ever action you want.
function iAction()
{
// Iterate through all iframes in the page.
for (var i = 0, j = iFrames.length; i < j; i++)
{
actionIframe(iFrames[i]);
}
}
// Check if browser is Safari or Opera.
if ($.browser.safari || $.browser.opera)
{
// Start timer when loaded.
$('iframe').load(function()
{
setTimeout(iAction, 0);
}
);
// Safari and Opera need something to force a load.
for (var i = 0, j = iFrames.length; i < j; i++)
{
var iSource = iFrames[i].src;
iFrames[i].src = '';
iFrames[i].src = iSource;
}
}
else
{
// For other good browsers.
$('iframe').load(function()
{
actionIframe(this);
}
);
}
}
</script>
Microsoft ADO.NET Entity Framework - это среда объектно-реляционного сопоставления от Microsoft, которая позволяет писать код, который (отчасти ) DB-агностик. Все основные СУБД поддерживают Entity Framework, хотя для многих (например, MySQL, Postgres) вам потребуется загрузить что-то отдельно от установленной вами .NET Framework.
Примечание: мне еще предстоит поработать над одним большим проектом с использованием инструмента O / RM, где не было хотя бы одного случая, когда нам пришлось бы использовать собственный SQL - либо для специфической функциональности БД, либо для производительности причины (необходимо было написать запрос определенным образом, чтобы получить хороший план запроса). Но хороший O / RM может работать большую часть времени, чтобы не писать SQL.
Тем не менее, текущая версия Entity Framework довольно ограничена по ряду параметров - другие структуры O / RM, такие как NHibernate , SubSonic и т. д., гораздо более зрелые, где «зрелые» означает поддержку более широкого спектра функций СУБД без необходимости использовать собственный SQL, более широкую поддержку сообщества, лучшую производительность и т. д.
Это мой вежливый способ сказать, что для реального, относительно сложного проекта я не Не думаю, что текущая версия Entity Framework - лучший вариант по сравнению с другими доступными инструментами O / RM.
По-видимому, грядущая версия Microsoft Entity Framework .NET 4.0 / VS2010 значительно улучшена, поэтому в следующем году приведенное выше утверждение может оказаться неверным. В новой Entity Framework добавлена поддержка DDL, например, поэтому вы можете создавать таблицы и индексы независимо от СУБД. Кроме того, .NET 4.0 Entity Framework использует классную функцию под названием T4 Templates , которая представляет собой удобную функцию для автоматической генерации кода во время сборки, что важно для таких вещей, как оболочки O / RM, которые должны синхронизироваться с внешней схемой БД - и это должно дать лучшую (также известную как предварительно скомпилированную) производительность, чем инструменты O / RM, которые не знают типы столбцов базы данных до времени выполнения.
Как я понял, вы ищете инструмент для написания независимого от СУБД SQL, но не ORM. Это очень актуальная проблема, которую разные производители ORM решают по-разному. Я просто могу упомянуть инструмент Xtensive SQL DOM , который был разработан для их ORM - DataObjects.Net . Это абстракция над SQL, позволяющая писать запросы с использованием полнофункциональной модели DOM. В настоящее время SQL DOM не продвигается отдельно от DataObjects.Net, но это продукт с открытым исходным кодом, и вы, безусловно, можете спросить об этом его авторов. Насколько мне известно, он успешно используется в некоторых сторонних проектах.
Не напрямую от Microsoft. Эти инструменты обычно называются объектно-реляционными преобразователями или сокращенно ORM. NHibernate, например, является распространенным и широко используемым ORM, который наверняка соответствует вашим потребностям. Конечно, есть и другие коммерческие продукты, такие как Telerik OpenAccess ORM, DevExpress XPO или RemObjects DataAbstract, которые помогут вам не зависеть от базы данных.