LINQ または DbContext 拡張メソッドを追加して要素 (FirstOrDefault) を取得しようとしていますが、まだ存在しない場合は、null を返す代わりに、データ (FirstOrCreate) を使用して新しいインスタンスを作成します。
これは可能ですか?
すなわち:
public static class LINQExtension
{
public static TSource FirstOrCreate<TSource>(
this IEnumerable<TSource> source,
Func<TSource, bool> predicate)
{
if (source.First(predicate) != null)
{
return source.First(predicate);
}
else
{
return // ???
}
}
}
使用法は次のとおりです。
using (var db = new MsBoxContext())
{
var status = db.EntitiesStatus.FirstOrCreate(s => s.Name == "Enabled");
//Here we should get the object if we find one
//and if it doesn't exist create and return a new instance
db.Entities.Add(new Entity()
{
Name = "New Entity",
Status = status
});
}
私のアプローチを理解していただければ幸いです。