gpt4 book ai didi

c# - Entity Framework 6 中的 Fluent Api 不兼容 Entity Framework Core

转载 作者:行者123 更新时间:2023-12-03 19:33:21 25 4
gpt4 key购买 nike

我使用 Entity Framework 6 实现了 Fluent API。使用 EnityFrameworkCore 实现相同的 API 时遇到问题。

下面是使用 EntityFramework 6 使用 Fluent API 的代码

 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");
});


}

我在 EntityFrameworkCore 中遇到的问题是

  1. 它无法识别 CustomerConfiguration() 中的 ToTable 和 Property 关键字
  2. 它无法识别 OnModelCreating 方法中的 Configurations、HasRequired、MapLeftKey、MapRightKey、ToTable 关键字

有人可以告诉我如何使用 EntityFrameWork Core 中的 Fluent API 来实现此目的

最佳答案

EF core使用完全不同的API,所以你必须先学习它。

举个例子:这是设置 ToTable() 的方式。

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>()
.ToTable("blogs");
}

要了解,您必须阅读这些链接:

Table Mapping

Relationships

Creating a Model

将实体类型的配置封装在类中:

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>());
}
}
}

您可以在此处查看更多详细信息(请参阅由 @rowanmiller 编辑的第一篇文章:Github

关于c# - Entity Framework 6 中的 Fluent Api 不兼容 Entity Framework Core,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40708056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com