1.首先引入EF,并在数据库中创建好test1数据库,在配置文件中配置好数据库连接字符串
namespace FluentApi
{
public class Person
{
public long Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
}
using System.Data.Entity;
using System.Reflection;
namespace FluentApi
{
/// <summary>
/// 创建数据库上下文对象
/// </summary>
public class TestContext : DbContext
{
public TestContext() : base("name=conn1")
{
}
public DbSet<Person> Persons { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Configurations.AddFromAssembly(Assembly.GetExecutingAssembly());
}
}
}
using System.Data.Entity.ModelConfiguration;
namespace FluentApi.EntityConfig
{
/// <summary>
/// 使用FluentAPI配置数据库表
/// </summary>
public class PersonConfig : EntityTypeConfiguration<Person>
{
public PersonConfig()
{
ToTable("T_Persons");
Property(e => e.Name).HasMaxLength(20).IsRequired();
}
}
}
using System;
using System.Data.Entity.Validation;
namespace FluentApi
{
/// <summary>
/// 使用FluentAPI配置数据库表
/// </summary>
internal class Program
{
private static void Main()
{
Console.Title = "FluentAPI";
UserFluentApi();
Console.ReadKey();
}
private static void UserFluentApi()
{
using (var context = new TestContext())
{
var p = new Person
{
Age = 30,
Name = "LDH"
//Name = "LDH88888888888888888888888888888888888888" // 错误:Name,字段 Name 必须是最大长度为“20”的字符串或数组类型。
};
context.Persons.Add(p);
try
{
context.SaveChanges();
Console.WriteLine("创建成功!");
}
catch (DbEntityValidationException ex)
{
foreach (var err in ex.EntityValidationErrors)
foreach (var ve in err.ValidationErrors)
Console.WriteLine("错误:" + ve.PropertyName + "," + ve.ErrorMessage);
}
}
}
}
}