Re[2]: templated InsertWithIdentity
От: Holms США  
Дата: 15.02.10 21:11
Оценка:
Здравствуйте, IT, Вы писали:

IT>К сожалению, такое сделать нельзя из-за ограничений C#. Сигнатура метода InsertWithIdentity уже включает обобщенные параметры:


IT>
IT>public static object InsertWithIdentity<T>([NotNull] this IValueInsertable<T> source)
IT>public static object InsertWithIdentity<T>([NotNull] this Table<T> target, [NotNull] Expression<Func<T>> setter)
IT>public static object InsertWithIdentity<TSource,TTarget>(
IT>public static object InsertWithIdentity<TSource,TTarget>([NotNull] this ISelectInsertable<TSource,TTarget> source)
IT>

IT>Добавление ещё одного параметра заставит явно указывать их все, т.к. в C# нельзя указывать неполный список обобщённых параметров.

ладно с этим можно прожить, а как насчет такого метода InsertOrUpdate
а то уже устал писать такой код

int rows =
        ctx.ProjectFinance
            .Where(_ => _.ProjectId == projectId && _.PhaseName == phaseName)
            .Set(_ => _.OriginalBudget, budgetOriginal)
            .Set(_ => _.CurrentBudget, budgetCurrent)
            .Update();
    if (rows == 0)
        ctx.ProjectFinance
            .Insert(() => new ProjectFinance
                                            {
                                                ProjectId = projectId,
                                                PhaseName = phaseName,
                                                OriginalBudget = budgetOriginal,
                                                CurrentBudget = budgetCurrent
                                            });
... << RSDN@Home 1.2.0 alpha 4 rev. 1441>>
The life is relative and reversible.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.