|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
完全不一样的。.net其实我也说不太清,.net可以把他理解为跟J2EE相对的工具。c++主要做系统相关的开发你要学.net的话就应该学C#。(其实微软在.NET平台上也考虑了给C++留一个地位。这里的“私闯sys.databases”是指EntityFramework默许倡议的查询:SELECTCount(*)FROMsys.databasesWHERE[name]=N数据库名
注:本文针对的是EntityFrameworkCodeFirst场景,EntityFramework的版本是4.1与4.2。
3月份的时分在揭开EntityFrameworkLINQ查询的一点面纱一文中发明了EntityFramework的两个幕后买卖。
第一个买卖(私闯sys.databases):
SELECTCount(*)FROMsys.databasesWHERE[name]=NCNBlogsData第二个买卖(擅自刺探数据库的信息):
SELECTTOP(1)
[Extent1].[Id]AS[Id],
[Extent1].[ModelHash]AS[ModelHash]
FROM[dbo].[EdmMetadata]AS[Extent1]
ORDERBY[Extent1].[Id]DESC事先经由过程modelBuilder.Conventions.Remove<IncludeMetadataConvention>();制止了第二个买卖,但未能找到办法制止第一个买卖。
记妥当时用的是EntityFramework4.0,厥后微软公布了EF4.1和EF4.2。那我们来看看EntityFramework有无弃暗投明。
了局发明,只改了一半,第二个买卖“荡子转头”,而第一个买卖“贼心不改”。
代码天下是完善天下,决不同意如许的举动,必定要将之逍遥法外。
经由明天下战书的勉力,终究找到了这根“绳索”:
Database.SetInitializer<DbContextTypeName>(null);
示例代码以下:- publicclassEfUnitOfWork:DbContext,IUnitOfWork{publicEfUnitOfWork(){Database.SetInitializer<EfUnitOfWork>(null);}protectedoverridevoidOnModelCreating(DbModelBuildermodelBuilder){}}
复制代码 能够看出,EntityFramework“私闯sys.databases”的目标是为了在依据实体天生数据库时,反省是不是存在同名的数据库。
而我们的使用场景基本不必要EntityFramework天生数据库,以是将之逍遥法外是“光明正大”。
在VC.net的版本上,为了让C++运行在.NETFramework中,微软为C++引进了托管,就是托管C++(ManagedC++),这个根本就没有流行起来,自托管C++产生以后就没有收到过好评。 |
|