.NET 6.0中EF Designer的替代方案是什么?

3

我已经成功地在.NET Framework WPF应用程序中使用EF。

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

我所说的EF设计器是:

可以通过1次单击从数据库更新的模型

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

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 Designer?


请看 EF Core Power Tools。 - ErikEJ
ADO.NET在.NET 6上得到支持 - 只是没有可视化数据库结构设计器(ADO.NET数据模型设计器)。Linq在.NET 6中也完全正常工作。在.NET 6中,Microsoft没有提供可视化数据库设计器的“替代方案” - 如果这对您很重要,您将不得不寻找第三方工具(例如DevArt EF Core Designer或类似工具)。 - marc_s
2个回答

3
EDMX不符合趋向于协作友好的设计趋势,自从开发和源代码控制越来越向在线工具转移并且越来越多的软件以开源形式开发以来,这种趋势一直在进行中。它已经被弃用了,在EF Core中也没有重建,而且如果有可能的话,它也不会很快回来。
即使只有两个人接触过源代码,这个庞大的EDMX文件也是一场灾难。我自己也有过这样的经历。类似的巨型文件也存在并被放弃。其他的设计/架构已经出现,可以最小化合并冲突的风险进行修改,例如垂直切片(顺便说一句,并不仅仅因为这个原因)。
您可能不同意,但我的经验也表明,跟随这样的趋势(如果你无法战胜它们,就加入它们)会更好。不要试图找到类似的单一替代方案。首先从编写代码开始。也许使用迁移,但并非必须(迁移也不利于协作)。数据库脚本和 EF 类文件的同步维护并不难,而且在数据库变得更加复杂时,这是唯一可行的方法。可以通过有用的工具(例如 EF Core Power Tools)生成新类,之后可以重新生成或手动维护。
我们喜欢使用 数据库项目 作为真实数据的单一来源,这也使得详细的更改跟踪在源代码控制中成为可能(可以说比迁移好得多)。

2
EF Core不使用设计器使用的EDMX,也没有新的设计器。您可以在.NET Core中使用旧版的EF6,但是设计器不支持.NET Core项目。您可以在单独的项目中使用设计器,并将生成的DbContext包含在您的.NET Core项目中。请参见https://learn.microsoft.com/en-us/ef/ef6/what-is-new/#ef-designer-support 但是,在我看来,仅为了保留设计器而使用旧版EF是不值得的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接