我有一个EF6 DbContext,它是从模型中自动生成的,我想将UseDatabaseNullSemantics设置为true。
我不想在DbContext的每个实例上设置UseDatabaseNullSemantics(这意味着需要很多代码),并且因为它是生成的,所以我不能将DdContext中的值设置为UseDatabaseNullSemantics。构造函数。
有没有办法让UseDatabaseNullSemantics为应用程序一劳永逸地设置为true?
编辑+澄清:
我的" FordonTrpEntities" DbContext子类是自动生成的,位于" FordontTrp.edmx"模型文件。
如果我在此类的构造函数中设置配置,如果/何时重新生成文件,它将被删除?如文件头中所述:
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated from a template.
//
// Manual changes to this file may cause unexpected behavior in your application.
// Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
public partial class FordonTrpEntities : DbContext
{
public FordonTrpEntities()
: base("name=FordonTrpEntities")
{
Configuration.UseDatabaseNullSemantics = true;
}
答案 0 :(得分:1)
是的,您必须在DbContext类的构造函数中设置它,如下所示:
public class YourDbContext : DbContext
{
public YourDbContext()
{
Configuration.UseDatabaseNullSemantics = true;
}
// DbSet declarations
}
在大多数有过滤器的查询中,您会注意到性能的巨大提升,因为它不会对条件添加空检查。
如果您正在使用自动生成的代码,则无法直接修改此类,因为它将被覆盖。在这种情况下,您可以修改TT文件。