.NET 6.0 中 EF Designer 的替代品是什么

问题描述 投票:0回答:3

我在.NET框架WPF应用程序中成功使用了EF。

现在我正在迁移到 .NET 6.0 wpf 应用程序,这里无法使用 EF 设计器。

我所说的 EF Designer 的意思是:

model, which I can update from database in 1 click

自动生成的上下文类如下:

public partial class NEVA_TELECOM_DBEntities : DbContext
{
    public NEVA_TELECOM_DBEntities()
        : base("name=NEVA_TELECOM_DBEntities")
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }

    public virtual DbSet<Position> Positions { get; set; }
    public virtual DbSet<Employee> Employees { get; set; }
    public virtual DbSet<Event> Events { get; set; }
    public virtual DbSet<sysdiagram> sysdiagrams { get; set; }
    public virtual DbSet<AvailableModule> AvailableModules { get; set; }
    public virtual DbSet<Абоненты> Абоненты { get; set; }
    public virtual DbSet<Заявки> Заявки { get; set; }

    public virtual ObjectResult<string> sp_GetEmployeePosition(string number)
    {
        var numberParameter = number != null ?
            new ObjectParameter("Number", number) :
            new ObjectParameter("Number", typeof(string));

        return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<string>("sp_GetEmployeePosition", numberParameter);
    }

我不需要自己写连接字符串。

我也可以在哪里使用 Linq:

(from p in db.AvailableModules 
 where p.Access_Code == AcessCODE 
 select p.Available_Module).ToList();

那么是否有一个框架可以在 .NET 6.0 中完成所有这些工作?或者有没有办法在 .NET 6.0 中使用 EF 设计器?

.net entity-framework ado.net .net-6.0 .net-framework-version
3个回答
1
投票

EDMX 不符合协作友好设计的趋势,自从开发和源代码控制越来越转向在线工具以及越来越多的软件被开发为开源以来,这种趋势一直在发生。它被遗弃在 EF core 中(或者更好:不重建),而且它不会很快回到那里 - 如果有的话。

即使只有两个人接触源代码,这个整体 EDMX 文件也是一场灾难。我自己也经历过。类似的巨石存在并被遗弃。其他设计/架构已经出现,允许以最小的合并冲突风险进行修改,例如垂直切片(顺便说一句,不仅仅是因为这个原因)。

你可能不同意,但这也是我的经验,最好顺应这种趋势(如果你不能打败他们,就加入他们)。不要试图寻找类似的单一替代方案。首先开始工作代码。也许需要迁移,但不一定(迁移也不利于协作)。同步维护数据库脚本和 EF 类文件一点也不难,而且在我看来,当数据库变得更加复杂时,“无论如何”这是唯一的方法。新类可以通过有用的工具(如 EF Core Power Tools)生成,然后重新生成或手动维护。 我们喜欢使用

数据库项目

作为单一事实来源,这也可以在源代码控制中实现详细的更改跟踪(可以说比迁移好得多)。


1
投票
https://learn.microsoft.com/en-us/ef/ef6/what-is-new/#ef-designer-support

但在我看来,仅仅为了保留设计师而使用旧的 EF 是不值得的。


0
投票
DevMagic Studio

,它同时支持数据库优先和代码优先开发。它将自动生成您需要的代码,例如实体、dbcontext、linQ、服务、API。生成的代码是标准的C#,您可以直接将代码保存到目标位置并在VisualStudio中维护代码。

© www.soinside.com 2019 - 2024. All rights reserved.