Я поддерживаю фиксацию папки .idea (исключая workspace.xml
и tasks.xml
). Но я начинаю приходить к выводу, что файлы .iml следует игнорировать.
Вот проблема:
Откройте проект в каталоге с именем «foo», например, и вы получите foo.iml, и все это выглядит хорошо. Проблема в том, что если я просто переименую каталог в foo2 (или клонирую его в другое имя каталога) при попытке открыть проект в Android Studio, вы получите три вещи:
Я не могу найти способа помешать Android Studio выполнять генерацию этого файла iml, когда проект хранится в другом каталоге. Добавление их в систему управления версиями вызовет проблемы. Поэтому я думаю, что, возможно, мы должны игнорировать файлы * .iml и .idea/modules.xml
I think you can create your own provider that uses the defaults you want to use. You could create that provider easily by inheriting all the classes from odp.net, just adjust some properties like BindByName.
The DbProviderfactory will create your classes instead of the normal odp.net classes.
Что касается прекращение поддержки поставщика Microsoft ADO .NET для Oracle:
ODP .NET уже отнял у меня слишком много времени.
Используйте косвенное обращение и наследование! Если вы выполняете доступ к данным через абстрактный класс базы данных, потребуйте привязку параметра дескриптора реализации базы данных.
public abstract class Database
{
private readonly DbProviderFactory factory;
protected Database(DbProviderFactory factory)
{
this.factory = factory;
}
public virtual DbCommand CreateCommand(String commandText)
{
return CreateCommand(CommandType.Text, commandText);
}
public virtual DbCommand CreateCommand(CommandType commandType, String commandText)
{
DbCommand command = factory.CreateCommand();
command.CommandType = commandType;
command.Text = commandText;
return command;
}
public virtual void BindParametersByName(DbCommand command)
{
}
}
И выберите создание конкретной реализации Oracle, которая переопределяет создание команды по умолчанию или предоставляет возможность привязать параметры по имени.
public class OracleDatabase : Database
{
public OracleDatabase()
: base(OracleClientFactory.Instance)
{
}
public override DbCommand CreateCommand(CommandType commandType, String commandText)
{
DbCommand command = base.CreateCommand(commandType, commandText);
BindParametersByName(command);
return command;
}
public override void BindParametersByName(DbCommand command)
{
((OracleCommand)command).BindByName = true;
}
}
Код, основанный на блоке приложения доступа к данным в Enterprise Library .