为生成的DbContext EF6设置UseDatabaseNullSemantics

时间:2016-02-17 15:18:13

标签: c# entity-framework

我有一个EF6 DbContext,它是从模型中自动生成的,我想将UseDatabaseNullSemantics设置为true。

我不想在DbContext的每个实例上设置UseDatabaseNullSemantics(这意味着需要很多代码),并且因为它是生成的,所以我不能将DdContext中的值设置为UseDatabaseNullSemantics。构造函数。

有没有办法让UseDatabaseNullSemantics为应用程序一劳永逸地设置为true?

编辑+澄清:

我的" FordonTrpEntities" DbContext子类是自动生成的,位于" FordontTrp.edmx"模型文件。

enter image description here

如果我在此类的构造函数中设置配置,如果/何时重新生成文件,它将被删除?如文件头中所述:

//------------------------------------------------------------------------------
// <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;
    }

1 个答案:

答案 0 :(得分:1)

是的,您必须在DbContext类的构造函数中设置它,如下所示:

public class YourDbContext : DbContext 
{
     public YourDbContext() 
     {
          Configuration.UseDatabaseNullSemantics = true;
     }

     // DbSet declarations
}

在大多数有过滤器的查询中,您会注意到性能的巨大提升,因为它不会对条件添加空检查。

如果您正在使用自动生成的代码,则无法直接修改此类,因为它将被覆盖。在这种情况下,您可以修改TT文件。