你的位置:首页 > ASP.net教程

[ASP.net教程]创建DbContext


返回总目录《一步一步使用ABP框架搭建正式项目系列教程》


上一篇介绍了《创建实体》,这一篇我们顺其自然地介绍《创建DbContext》。

温故:

提到DbContext,对于经常使用DbFirst模式的开发者来说已经再熟悉不过了,EntityFramework全靠这员大将。它的作用是代表与数据库连接的会话,提供了查询、状态跟踪、保存等功能。

还有一个重要的对象是DbSet,对实体类型提供了集合操作,比如Add、Attach、Remove。继承了DbQuery,所以可以提供查询功能。

知新:

ABP框架为我们创建了一个DbContext模板。这个模板就是我项目中基础设施层的ChargeStationDbContext.cs文件(当然,如果你的项目名称是XX,那么它的名字就是XXDbContext.cs),如下图:

image

开干:

双击打开这个文件开始编辑。

image

 

打开文件之后,发现有个todo提示,这个提示告诉我们“为你的实体们定义IDbset”。好,接下来,我们就在这个地方来定义以下代码。

    public virtual IDbSet<Cities> Cities { set; get; }    public virtual IDbSet<CoinsCollectionDataLogs> CoinsCollectionDataLogs { set; get; }    public virtual IDbSet<DeviceCoinsRecords> DeviceCoinsRecords { set; get; }    public virtual IDbSet<DeviceNoDataSets> DeviceNoDataSets { set; get; }    public virtual IDbSet<MoneyBoxRecycleRecords> MoneyBoxRecycleRecord { set; get; }    public virtual IDbSet<MonthEndReports> MonthEndReports { set; get; }    public virtual IDbSet<Operators> Operators { set; get; }    public virtual IDbSet<Orders> Orders { set; get; }    public virtual IDbSet<Provinces> Provinces { set; get; }    public virtual IDbSet<RefundOrders> RefundOrders { set; get; }    public virtual IDbSet<Stations> Stations { set; get; }    public virtual IDbSet<TerminalAlertLogs> TerminalAlertLogs { set; get; }    public virtual IDbSet<TerminalDevices> TerminalDevices { set; get; }    public virtual IDbSet<TerminalMaintainLogs> TerminalMaintainLogs { set; get; }    public virtual IDbSet<TransDetails> TransDetails { set; get; }

再次注意一下这里的提示“为你的实体们定义IDbset”,因为我的实体中还定义了Abp开头的一些Users和Roles等等,所以我在这里继续定义它们的IDbSet。定义之后,发

现报错,原话是这样的:“The key word ‘new’is required on ‘Roles’because it hides property IDbSet<TRole> AbpZeroDbContext<TTenant, TRole, TU

ser>”,翻译成人话就是说“父类中已经有这个属性了,如果你还要定义的话,就必须加一个new关键字来隐藏父类的同名属性”。可见,父类中已经定义了关于租户,用户和

角色等的属性,那么我们直接用就好了。来看看ABP module-Zero中的源码:

image

ABP已经帮我们做了这么多,这就是它强大之所在啊。因而,推断出这里我们不用再定义这些东西的IDbSet了,只需定义自己业务的实体,相应地,之前(上一篇)创建的这些实体也应该删除了。

 

好了,这里我们定义完了IDbSet,那么AbpZeroDbContext是怎么连接到数据库的呢?它的连接字符串在哪呢?

注意看该类的构造函数,它调用了父类的构造函数,并且将“Default”字符串传给父类的构造函数。实际上,这个字符串一直从AbpZeroDbContext类传给其父类AbpContext,再向上传给父类DbContex,用于数据库的连接使用。最后通过读取Web.Config中name属性的值为“Default”的连接字符串来连接数据库。

<connectionStrings>  <add name="Default" connectionString="Server=localhost; Database=ChargeStation; Trusted_Connection=True;" providerName="System.Data.SqlClient" /> </connectionStrings>

好了,今天的《创建DbContext》就说到这里,肚子饿了,该去做午饭了!下一篇我们聊《创建数据库迁移》,让我们一小步一小步地揭开ABP框架的神秘面纱,敬请关注!




深圳到普吉岛旅游深圳去普吉岛旅游报价办理普吉岛旅游签证跟团普吉岛旅游需要多少钱几月份去普吉岛旅游最好七娘山野炊山庄官网,深圳七娘山野炊山庄官方网站。 七娘山野炊山庄门票2015-10-12月深圳七娘山野炊山庄门票价格 七娘山野炊山庄怎么走?深圳七娘山野炊山庄门票多少钱? 七娘山野炊山庄地址?深圳七娘山野炊山庄在哪里? 行李超重怎么办?飞机行李超重怎么办 行李超重收费多少? 从化大金峰最新票价?大金峰全面开放了吗? 秋天旅游景点推荐 秋天旅游好去处 秋天旅游去哪里推荐 2015永记生态园中秋节活动?惠州永记生态园中秋节门票多少钱? 泡温泉穿什么_泡温泉穿什么泳衣_泡温泉需要穿泳衣吗 日月潭在哪里_日月潭在哪个省_日月潭风景区交通指南 老君山在哪_洛阳老君山在哪里_栾川老君山在哪个省 悉尼歌剧院简介 手握地图,寻澳门美食手信街(组图) 十堰有什么地方特产? 山西太原特色美食概况 三百年历史风霜雨打--黄烧饼 IDT74LVC273APGG8 Datasheet IDT74LVC273APGG8 Datasheet IDT23S08E-1HDCG Datasheet IDT23S08E-1HDCG Datasheet IDT7201LA50J Datasheet IDT7201LA50J Datasheet 欧洲旅游安排 欧洲旅游安排 欧洲旅游安排 欧洲旅游行程 欧洲旅游行程 欧洲旅游行程 从深圳去欧洲旅游报价 从深圳去欧洲旅游报价 从深圳去欧洲旅游报价