I'm migrating from BLToolkit to LinqToDB. And I couldn't find replacements for some classes or methods missing in LinqToDB.
IDataContext.Delete()andIDataContext.InsertOrReplace()cannot acceptIEnumerable<T>anymore. Is iterating over entities collection and usingdb.InsertOrReplace(inputEntities[i])the only option? Isn't that a performance hit?- In our class derived from
MappingSchemain some cases instead of our custom conversions we usedbase.ConvertChangeType(). Now it's missing - what is supposed to be used instead? - We used
dbManager.SetCommand(command, params).Prepare()- Prepare is missing now. How to prepare command for execution? IObjectFactory.CreateInstancehas noInitContext contextargument anymore. How to obtaincontext.MappingSchema,context.DataSourceandcontext.SourceObjectnow?- In BLToolkit we used
SqlQueryInfoto change parameter names in query like that:
public static void SetCommand<TEntity>([NotNull] this DbManager dbManager, TEntity entity, string actionName)
{
var queryInfo = new SqlQuery<TEntity>(dbManager).GetSqlQueryInfo(dbManager, typeof(TEntity), actionName);
var queryText = queryInfo.QueryText;
var parameters = queryInfo.GetParameters(dbManager, entity);
for (var i = 0; i < parameters.Length; i++)
{
var parameterName = parameters[i].ParameterName;
//Parameters and Where-clause for primary key
if (parameterName.EndsWith("_P") || parameterName.EndsWith("_W"))
{
var newName = parameterName.Substring(0, parameterName.Length - 2);
queryText = queryText.Replace(parameterName, newName);
parameters[i].ParameterName = newName;
}
}
dbManager.SetCommand(queryText, parameters);
}
SqlQuery and SqlQueryInfo are missing - what to use instead?