EF7创建模型入门篇

本文详细介绍了EF7中创建模型的各个方面,包括实体类型、共享类型实体类型、实体属性、键的配置,如主键、复合键、备选键等,并提到了数据注释和内置约定的使用,帮助读者理解如何在EF7中有效地构建数据库模型。
摘要由CSDN通过智能技术生成

在EF7中,创建一个模型是非常重要的步骤。本文将使用微软官方文档中的指南,来学习EF7中的创建模型篇,外加一点点个人理解。纸飞机APP下载

实体类型

在 EF7 中,你需要使用 modelBuilder.Entity() 方法来告诉 EF7 你要包含哪些类型。默认情况下,EF7 会将实体类型的名称设置为表的名称。但是,你可以使用 ToTable() 方法来覆盖默认行为。

如果你的数据库中有多个模式(schema),你可以使用 ToTable() 方法的另一个重载版本来指定表所属的架构。如果你想要为生成的表添加注释,可以使用 HasComment() 方法。如果你不想将某个类映射到数据库中的表。我们可以使用 modelBuilder.Entity().Ignore() 来排除它。

protectedoverridevoidOnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Blog>()
		.ToTable("Blogs", schema: "dbo") //.ToTable("Blogs");
		.HasComment("This table contains blog posts.");
	modelBuilder.Ignore<Address>();
}
共享类型实体类型

在 EF7 中,你可以将一个类型映射到多个表中。这种情况通常发生在你有一组具有相似属性的类型,这些属性在不同的表中都需要使用。在这种情况下,你可以使用 ModelBuilder.SharedTypeEntity() 方法来创建一个实体类型,并将其映射到多个表中。

protectedoverridevoidOnModelCreating(ModelBuilder modelBuilder)
{
    var addressEntity = modelBuilder.SharedTypeEntity<Address>("Address");
    addressEntity.ToTable("CustomerBillingAddresses");
    addressEntity.ToTable("CustomerShippingAddresses");

    modelBuilder.Entity<Customer>()
        .OwnsOne(c => c.BillingAddress, b =>
        {
            b.WithOwner().HasForeignKey("BillingAddressId");
            b.ToTable("CustomerBillingAddresses");
        });

    modelBuilder.Entity<Customer>()
        .OwnsOne(c => c.ShippingAddress, b =>
        {
            b.WithOwner().HasForeignKey("ShippingAddressId");
            b.ToTable("CustomerShippingAddresses");
        });
}

在上面的代码中,我们首先使用 ModelBuilder.SharedTypeEntity() 方法创建一个名为 Address 的实体类型。然后,我们使用 ToTable() 方法将该实体类型映射到多个表中。接下来,我们使用 OwnsOne() 方法来将 BillingAddressShippingAddress 属性映射到具有相应名称的表中。注意,我们还使用了 HasForeignKey() 方法来指定外键的名称。

使用共享类型实体类型可以使你的代码更加简洁,并提高可维护性。通过使用共享类型实体类型,你可以将一个类型映射到多个表中,而不必在每个实体类型中都定义相同的映射代码。

实体属性

如果要排除实体属性,可以使用Ignore()方法。

modelBuilder.Entity<Person>().Ignore(p => p.Age)

定义列名。例如,下面的代码将为Person类中的LastName属性定义列名。

modelBuilder.Entity<Perso
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值