1. 表结构操作

1.1 表名

  Data Annotations:

using System.ComponentModel.DataAnnotations.Schema;
[Table("Role")]
public class Role
{
// ...
}

  FluentAPI:

using Microsoft.EntityFrameworkCore;
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Role>().ToTable("Role");
}

1.2 字段

  Data Annotations:

using System;
using System.Collections.Generic;
using System.Text; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; namespace Libing.App.Models.Entities
{
[Table("Role")]
public class Role
{
[Column("RoleID")]
public int RoleID { get; set; } [Required]
[Column("RoleName",TypeName = "varchar(200)")]
public string RoleName { get; set; }
}
}

  FluentAPI:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Role>().ToTable("Role");
modelBuilder.Entity<Role>()
.Property(t => t.RoleID)
.HasColumnName("RoleID");
modelBuilder.Entity<Role>()
.Property(t => t.RoleName)
.HasColumnName("RoleName")
.HasColumnType("varchar(200)")
//.HasMaxLength(200)
.IsRequired();
}

1.3 主键

  Data Annotations:

[Table("Role")]
public class Role
{
[Key]
public int RoleID { get; set; }
}

  FluentAPI:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Role>()
.HasKey(t => t.RoleID); // 复合主键
//modelBuilder.Entity<Role>()
// .HasKey(t => new { t.RoleID, t.RoleName });
}

1.4 计算列

  FluentAPI:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<User>()
.Property(t => t.DisplayName)
.HasComputedColumnSql("[LastName] + ',' + [FirstName]");
}
CREATE TABLE [Users] (
[UserID] int NOT NULL IDENTITY,
[DisplayName] AS [LastName] + ',' + [FirstName],
[FirstName] nvarchar(max) NULL,
[LastName] nvarchar(max) NULL,
CONSTRAINT [PK_Users] PRIMARY KEY ([UserID])
);

1.5 生成值

  主键属性如果是整数或Guid类型,该属性将会被EntityFramework Core设置为自动生成。

  Data Annotations:

  (1)没有生成值

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int RoleID { get; set; }

  (2)添加操作生成值

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int RoleID { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public DateTime ModifiedDate { get; set; }

  (3)添加或修改操作生成值

[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public DateTime ModifiedDate { get; set; }

  FluentAPI:

modelBuilder.Entity<Role>()
.Property(t => t.RoleID)
.ValueGeneratedOnAdd();
modelBuilder.Entity<Role>()
.Property(t => t.ModifiedDate)
.ValueGeneratedNever();
modelBuilder.Entity<Role>()
.Property(t => t.ModifiedDate)
.ValueGeneratedOnAdd();
modelBuilder.Entity<Role>()
.Property(t => t.ModifiedDate)
.ValueGeneratedOnAddOrUpdate();

注:按照约定,非复合主键的类型 short、 int、 long、 或 Guid 将安装程序能够生成上添加的值。

  所有其他属性将与不值生成的安装程序。

1.6 默认值

modelBuilder.Entity<Role>()
.Property(t => t.RoleName)
.HasDefaultValue(String.Empty);
modelBuilder.Entity<Role>()
.Property(t => t.ModifiedDate)
.HasDefaultValueSql("GETDATE()");
CREATE TABLE [Role] (
[RoleID] int NOT NULL IDENTITY,
[ModifiedDate] datetime2 NOT NULL DEFAULT (GETDATE()),
[RoleName] varchar(200) NOT NULL DEFAULT N'',
CONSTRAINT [PK_Role] PRIMARY KEY ([RoleID])
);

1.7 序列

modelBuilder.HasSequence<int>("RoleSequence", "dbo")
.StartsAt()
.IncrementsBy();
modelBuilder.Entity<Role>()
.Property(t => t.RoleID)
.HasDefaultValueSql("NEXT VALUE FOR dbo.RoleSequence");
CREATE SEQUENCE [dbo].[RoleSequence] AS int START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE;
CREATE TABLE [dbo].[Role] (
[RoleID] int NOT NULL DEFAULT (NEXT VALUE FOR dbo.RoleSequence),
[ModifiedDate] datetime2 NOT NULL,
[RoleName] varchar(200) NOT NULL,
CONSTRAINT [PK_Role] PRIMARY KEY ([RoleID])
);

1.8 索引

modelBuilder.Entity<Role>()
.HasIndex(t => t.RoleName)
.HasName("IX_RoleName");
CREATE INDEX [IX_RoleName] ON [dbo].[Role] ([RoleName]);
modelBuilder.Entity<Role>()
.HasIndex(t => t.RoleName)
.IsUnique()
.HasName("IX_RoleName");
CREATE UNIQUE INDEX [IX_RoleName] ON [dbo].[Role] ([RoleName]);

1.9 默认架构

modelBuilder.HasDefaultSchema("dbo");

1.10 完整实体类配置

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Role>(entity =>
{
// Primary Key
entity.HasKey(t => t.RoleID); // Properties
entity.Property(t => t.RoleName).HasMaxLength(); // Table & Column Mappings
entity.ToTable("Role", "dbo");
entity.Property(t => t.RoleID).HasColumnName("RoleID");
entity.Property(t => t.RoleName).HasColumnName("RoleName");
});
}

  RoleConfiguration.cs

using System;
using System.Collections.Generic;
using System.Text; using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders; using Libing.App.Models.Entities; namespace Libing.App.Models.Configurations
{
public class RoleConfiguration : IEntityTypeConfiguration<Role>
{
public void Configure(EntityTypeBuilder<Role> builder)
{
// Primary Key
builder.HasKey(t => t.RoleID); // Properties
builder.Property(t => t.RoleName)
.IsRequired()
.HasMaxLength(); // Table & Column Mappings
builder.ToTable("Role", "dbo");
builder.Property(t => t.RoleID).HasColumnName("RoleID");
builder.Property(t => t.RoleName).HasColumnName("RoleName");
}
}
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfiguration(new RoleConfiguration());
}

2. 表数据操作

EntityFramework Core笔记:表结构及数据基本操作(2)的更多相关文章

  1. sqlserver删除所有表(表结构和数据)

    要删除某个数据库,或者删除数据库中的所有表(删除表结构和数据),需要先删除表间的外键约束,才能删除表.如删除数据库db_wy中的所有表: --/第1步**********删除所有表的外键约束***** ...

  2. SQL Server表结构和数据导入到MySQL

    借助的工具:Navicat for MySQL,链接:http://pan.baidu.com/s/1kVCw8IF 密码:g927 可以很明确的肯定,主键和自增列是没办法导入的,只能是表结构和数据. ...

  3. Oracle备份表结构和数据

    --创建一份表结构 create table BASE_GOODSPAYMENT_SETTING_BAK as select * from BASE_GOODSPAYMENT_SETTING ; -- ...

  4. MySQL 如何只导出 指定的表 的表结构和数据 ( 转 )

    MySQL 如何只导出 指定的表 的表结构和数据 ( 转 ) 2011-01-04 15:03:33 分类: MySQL MySQL 如何只导出 指定的表 的表结构和数据 导出更个库的表结构如下:my ...

  5. 复制表结构和数据SQL语句

    select * into 目标表名 from 源表名 insert into 目标表名(fld1, fld2) select fld1, 5 from 源表名 以上两句都是将 源表 的数据插入到 目 ...

  6. SQL复制表结构和数据

    1.复制表结构和数据 select * into 目的数据库名.dbo.目的表名 from 原表名 select * into my0735home.dbo.infoMianTest from inf ...

  7. SQL——表结构或数据的复制

    一.复制表结构及数据到新表 create table new_tb select * from old_tb 二.只复制表结构到新表 create table new_tb select * from ...

  8. orcale复制表结构及其数据

    http://hi.baidu.com/tag/Oracle/feeds http://hi.baidu.com/gqftuisidibabiq/item/14d306cc87cbdf45bcef69 ...

  9. Oracle复制表结构及数据

    1. 复制表结构及其数据:  create table table_name_new as select * from table_name_old 2. 只复制表结构:  ; 或者: create ...

随机推荐

  1. CentOS下RabbitMq高可用集群环境搭建

    准备工作 1,准备两台或多台安装有rabbitmq-server服务的服务器 我这里准备了两台,分别如下: 192.168.40.130 rabbitmq01192.168.40.131 rabbit ...

  2. 阿里云 API调用实践(python语言)

    1.结论:阿里云的SDK开发,其实就是远程调用API,python的代码就是一个外壳,核心是封装成一个http报文,利用json格式,进行RPC调用. 2.SDK调用API的套路如下: # -*- c ...

  3. Git:六、分支管理(指针操作)

    1.基本操作 1)创建分支 git branch <name> 2)切换分支 git checkout <name> 1)&2)创建并切换分支 git checkout ...

  4. .net DLL版本管理

    每个DLL打上版本号,方便识别维护

  5. Mysql数据库基础学习笔记

    Mysql数据库基础学习笔记 1.mysql查看当前登录的账户名以及数据库 一.单表查询 1.创建数据库yuzly,创建表fruits 创建表 ) ) ,) NOT NULL,PRIMARY KEY( ...

  6. python3 Counter类(计数器)

    Counter(计数器):用于追踪值的出现次数 Counter类继承dict类,所以它能使用dict类里面的方法 创建一个Counter类 import collections obj = colle ...

  7. C语言运行库翻译

    这是从Visual C++ 6里面的C语言部分翻译过来. http://files.cnblogs.com/files/sishenzaixian/C运行库.zip

  8. 5.3Python数据处理篇之Sympy系列(三)---简化操作

    目录 5.3简化操作 目录 前言 (一)有理数与多项式的简化 1.最简化-simplify() 2.展开-expand() 3.提公因式-factor() 4.合并同类项-ceiling() 5.简化 ...

  9. MySql 学习之路-基础

    Mysql 自学之路 本文包含基础部分与高级部分 一.基础 数据库操作 Show databases:显示所有的数据库 Show tables: 显示所有的数据库表 Use databasename: ...

  10. Python基础——1基础

    1.基础 输出 print(‘把子肉爱上热干面’,‘哈哈’)  # ‘,’输出为空格 输人 name = input(‘提示的内容’) /浮点除法  %.6f //地板除法  整除 %  取余 pyt ...