Fluent Api in Entity Framework 6 不兼容 Entity Framework Core
Fluent Api in Entity Framework 6 not compatible Entity Framework Core
我已经使用 Entity Framework 6 实现了 Fluent API。使用 EnityFrameworkCore 实现相同时遇到问题。
下面是使用 Fluent API 使用 EntityFramework 6
的代码
public class CustomerConfiguration : EntityTypeConfiguration<Customers>
{
public CustomerConfiguration()
{
ToTable("Customers");
Property(c => c.FirstName).IsRequired().HasMaxLength(50);
Property(c => c.LastName).IsRequired().HasMaxLength(50);
Property(c => c.Gender).IsRequired().HasMaxLength(10);
Property(c => c.Email).IsRequired().HasMaxLength(25);
Property(c => c.Address).IsRequired().HasMaxLength(50);
Property(c => c.City).IsRequired().HasMaxLength(25);
Property(c => c.State).IsOptional().HasMaxLength(15);
}
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new CustomerConfiguration());
modelBuilder.Configurations.Add(new OrderConfiguration());
modelBuilder.Configurations.Add(new ProductConfiguration());
modelBuilder.Entity<Orders>()
.HasRequired(c => c.Customers)
.WithMany(o => o.Orders)
.HasForeignKey(f => f.CustomerId);
modelBuilder.Entity<Orders>()
.HasMany<Products>(s => s.Products)
.WithMany(c => c.Orders)
.Map(cs =>
{
cs.MapLeftKey("OrderRefId");
cs.MapRightKey("ProductRefId");
cs.ToTable("OrderDetails");
});
}
我在EntityFramework核心遇到的问题是
- 它无法识别 CustomerConfiguration() 中的 ToTable 和 属性 关键字
- 不识别 OnModelCreating 方法中的 Configurations、HasRequired、MapLeftKey、MapRightKey、ToTable 关键字
有人能告诉我如何在 EntityFrameWork Core
中使用 Fluent API 来实现这一点吗
EF core使用完全不同APIs.So你必须先学习它
举个例子:这是设置 ToTable()
.
的方式
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>()
.ToTable("blogs");
}
要学习,您必须阅读这些链接:
将实体类型的配置封装在 class :
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace Microsoft.EntityFrameworkCore
{
public abstract class EntityTypeConfiguration<TEntity>
where TEntity : class
{
public abstract void Map(EntityTypeBuilder<TEntity> builder);
}
public static class ModelBuilderExtensions
{
public static void AddConfiguration<TEntity>(this ModelBuilder modelBuilder, EntityTypeConfiguration<TEntity> configuration)
where TEntity : class
{
configuration.Map(modelBuilder.Entity<TEntity>());
}
}
}
您可以在此处查看更多详细信息(请参阅第一个 post,由 @rowanmiller 编辑:Github
直接 link 到 table maping 文档。
也请阅读其余部分。 EF 核心是新产品,不是 EF6 的升级。
我已经使用 Entity Framework 6 实现了 Fluent API。使用 EnityFrameworkCore 实现相同时遇到问题。
下面是使用 Fluent API 使用 EntityFramework 6
的代码 public class CustomerConfiguration : EntityTypeConfiguration<Customers>
{
public CustomerConfiguration()
{
ToTable("Customers");
Property(c => c.FirstName).IsRequired().HasMaxLength(50);
Property(c => c.LastName).IsRequired().HasMaxLength(50);
Property(c => c.Gender).IsRequired().HasMaxLength(10);
Property(c => c.Email).IsRequired().HasMaxLength(25);
Property(c => c.Address).IsRequired().HasMaxLength(50);
Property(c => c.City).IsRequired().HasMaxLength(25);
Property(c => c.State).IsOptional().HasMaxLength(15);
}
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new CustomerConfiguration());
modelBuilder.Configurations.Add(new OrderConfiguration());
modelBuilder.Configurations.Add(new ProductConfiguration());
modelBuilder.Entity<Orders>()
.HasRequired(c => c.Customers)
.WithMany(o => o.Orders)
.HasForeignKey(f => f.CustomerId);
modelBuilder.Entity<Orders>()
.HasMany<Products>(s => s.Products)
.WithMany(c => c.Orders)
.Map(cs =>
{
cs.MapLeftKey("OrderRefId");
cs.MapRightKey("ProductRefId");
cs.ToTable("OrderDetails");
});
}
我在EntityFramework核心遇到的问题是
- 它无法识别 CustomerConfiguration() 中的 ToTable 和 属性 关键字
- 不识别 OnModelCreating 方法中的 Configurations、HasRequired、MapLeftKey、MapRightKey、ToTable 关键字
有人能告诉我如何在 EntityFrameWork Core
中使用 Fluent API 来实现这一点吗EF core使用完全不同APIs.So你必须先学习它
举个例子:这是设置 ToTable()
.
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>()
.ToTable("blogs");
}
要学习,您必须阅读这些链接:
将实体类型的配置封装在 class :
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace Microsoft.EntityFrameworkCore
{
public abstract class EntityTypeConfiguration<TEntity>
where TEntity : class
{
public abstract void Map(EntityTypeBuilder<TEntity> builder);
}
public static class ModelBuilderExtensions
{
public static void AddConfiguration<TEntity>(this ModelBuilder modelBuilder, EntityTypeConfiguration<TEntity> configuration)
where TEntity : class
{
configuration.Map(modelBuilder.Entity<TEntity>());
}
}
}
您可以在此处查看更多详细信息(请参阅第一个 post,由 @rowanmiller 编辑:Github
直接 link 到 table maping 文档。 也请阅读其余部分。 EF 核心是新产品,不是 EF6 的升级。