如果不存在,请创建条目

时间:2017-09-18 18:00:00

标签: c# entity-framework

我正在尝试使用Entity Core在我的Db中创建一个模型的单个实例。我希望它工作的方式是,如果Db中的条目不存在而不是make。而不是编写一个getter方法来完成工作,是否可以让Entity Core生成一个空白条目来处理和保存?

我尝试使用FirstOrDefault无效。

以下是一些示例代码:

using (var context = new SearchTermInformationContext())
{
    // this very first line should return me the single instance or create one if it doesnt exist.
    var searchTermInfo = context.SearchTermInformation.FirstOrDefault();
    searchTermInfo.num_search_terms += numSearchTerms;
    searchTermInfo.offset = offset;
    searchTermInfo.last_updated += (DateTime.UtcNow.Ticks / TimeSpan.TicksPerMillisecond).ToString();
    await context.SaveChangesAsync(ct);
}

1 个答案:

答案 0 :(得分:1)

FirstOrDefault()获取IEnumerable的第一个元素,如果序列为空,则返回该类型的默认值。由于实体始终为class,因此任何类的默认“值”为null。我无法改变这种行为。如果您想要这种行为,则必须通过创建类型的new实例,填写字段以及在上下文中执行插入来自行实现。如果你想变得非常花哨,你可以在DbSet<T>上创建一个扩展方法来执行一个空白实例的添加并返回附加的实体而不保存更改。