Entity Framework生成DataBase First模式

2022-04-18 09:22:48

一、新建控制台应用程序,然后右键->添加新建项,选择数据里面的实体数据模型:

ns="http://schemas.microsoft.com/ado/2009/11/mapping/cs"> <EntityContainerMapping StorageEntityContainer="StudentSystemModelStoreContainer" CdmEntityContainer="StudentSystemEntities"> <EntitySetMapping Name="Students"> <EntityTypeMapping TypeName="StudentSystemModel.Student"> <MappingFragment StoreEntitySet="Student"> <ScalarProperty Name="StudentID" ColumnName="StudentID" /> <ScalarProperty Name="StudentName" ColumnName="StudentName" /> <ScalarProperty Name="Sex" ColumnName="Sex" /> <ScalarProperty Name="Age" ColumnName="Age" /> <ScalarProperty Name="Major" ColumnName="Major" /> <ScalarProperty Name="Email" ColumnName="Email" /> </MappingFragment> </EntityTypeMapping> </EntitySetMapping> </EntityContainerMapping> </Mapping> </edmx:Mappings> </edmx:Runtime> <!-- EF Designer content (DO NOT EDIT MANUALLY BELOW HERE) --> <Designer xmlns="http://schemas.microsoft.com/ado/2009/11/edmx"> <Connection> <DesignerInfoPropertySet> <DesignerProperty Name="MetadataArtifactProcessing" Value="EmbedInOutputAssembly" /> </DesignerInfoPropertySet> </Connection> <Options> <DesignerInfoPropertySet> <DesignerProperty Name="ValidateOnBuild" Value="true" /> <DesignerProperty Name="EnablePluralization" Value="true" /> <DesignerProperty Name="IncludeForeignKeysInModel" Value="true" /> <DesignerProperty Name="UseLegacyProvider" Value="false" /> <DesignerProperty Name="CodeGenerationStrategy" Value="无" /> </DesignerInfoPropertySet> </Options> <!-- Diagram content (shape and connector positions) --> <Diagrams></Diagrams> </Designer></edmx:Edmx>

其中SSDL content定义的是数据库表的结构:

EntityFramework生成DataBaseFirst模式

CSDL content定义的是实体类的结构:

EntityFramework生成DataBaseFirst模式

C-S mapping content定义的是实体类和数据库表的映射关系:

EntityFramework生成DataBaseFirst模式

从C-S mapping content节点中可以看出,EF为什么会自动生成实体类,或者通过实体类为什么能操作数据库的数据了。

从这里可以看出EF做的第一件事情:取数据库的数据表结构,生成实体类,在表和实体之间自动建立映射关系。

3、StudentManager.tt是T4模板,是用来生成实体类的模板。

T4模板:从edmx中取数据结构,按照模板生成对应格式的实体类。

4、StudentManager.Context.cs文件

//------------------------------------------------------------------------------// <auto-generated>//     此代码已从模板生成。////     手动更改此文件可能导致应用程序出现意外的行为。//     如果重新生成代码,将覆盖对此文件的手动更改。// </auto-generated>//------------------------------------------------------------------------------namespace EFDbFirstDemo{    using System;    using System.Data.Entity;    using System.Data.Entity.Infrastructure;        public partial class StudentSystemEntities : DbContext    {        public StudentSystemEntities()            : base("name=StudentSystemEntities")        {        }            protected override void OnModelCreating(DbModelBuilder modelBuilder)        {            throw new UnintentionalCodeFirstException();        }            public virtual DbSet<Student> Students { get; set; }    }}

StudentSystemEntities继承自DbContext,用来操作数据库。

到此这篇关于Entity Framework生成DataBase First模式的文章就介绍到这了。希望对大gPOpx家的学习有所帮助,也希望大家多多支持我们。