Мне было интересно, прочитав этот вопрос ... у него есть этот код:
public static T FindOrCreate<T>(this Table<T> table, Func<T, bool> find)
where T : new()
{
T val = table.FirstOrDefault(find);
if (val == null)
{
val = new T();
table.InsertOnSubmit(val);
}
return val;
}
Можно ли также отправить этот новый предмет в качестве другого Func? Я имею в виду, конечно, это будет. Но было ли это уже создано? Или он будет создан первым при запуске Func? Допустим, у вас есть это:
public static T FindOrCreate<T>(this Table<T> table, Func<T, bool> find, Func<T> replacement)
where T : new()
{
T val = table.FirstOrDefault(find);
if (val == null)
{
val = replacement();
table.InsertOnSubmit(val);
}
return val;
}
А потом позвонил, сделав так:
var invoiceDb = ctx.Invoices.FindOrCreate(a => a.InvoicerId == InvoicerId
&& a.Number == invoiceNumber,
() => new Invoice());
invoiceDb.Number = invoiceNumber;
Если этот счет был найден, будет ли создан этот новый Счет? Или этот код выполняется только до тех пор, пока функция не будет вызвана? или как это работает?