Entity Framewor 学习笔记 (碎碎的东西)

Proxy 类
代理类是为了让EF实现lazy load才需要的
public class BloggingContext : DbContext 

    public BloggingContext() 
    { 
        this.Configuration.ProxyCreationEnabled = false; 
    }  
}
这样就可以关掉了。
using (var context = new BloggingContext()) 

    var blog = context.Blogs.Find(1); 
    var entityType = ObjectContext.GetObjectType(blog.GetType()); 
}
上面这个写法可以100%拿到Original Class, 如果 Proxy 是开启的状态,那么这将很好用



AsNoTracking
using (DB db = new DB())
{
    var product = db.products.AsNoTracking().FirstOrDefault();
    var state = db.Entry(product).State; // Detached
}

看到了吧,可以返回一个 Detached 的Entity, 可以帮助提升性能.

[NotMapped] prop不要map to sql 

[DatabaseGenerated(DatabaseGeneratedOption.Computed)] //让sql来generate value
[ConcurrencyCheck] //并发控制

更新 2016-07-14 

Entity framework sum 

refer : https://ilmatte.wordpress.com/2012/12/20/queryable-sum-on-decimal-and-null-return-value-with-linq-to-entities/

double resultA = db.units.Where(u => u.type == "aa").Sum(u => (double?)u.amount) ?? 0;
double resultB = db.units.Where(u => u.type == "aa").Sum(u => u.amount);  //error

resultB 会有 error , 2个制作出来的 sql 语句是一样的, 问题出在 double 必须是nullable 丫

 
原文地址:https://www.cnblogs.com/keatkeat/p/4743911.html