gpt4 book ai didi

entity-framework-core - 使用接口(interface)搭建 EF Core 实体

转载 作者:行者123 更新时间:2023-12-04 14:19:29 38 4
gpt4 key购买 nike

我正在使用 Entity Framework Core tools从现有数据库创建实体和 DBContext。

Scaffold-DbContext "Server=XXXXXX;Database=MyDB;User ID=xxxx;Password=xxxxxxx" Microsoft.EntityFrameworkCore.SqlServer -ContextDir .-OutputDir Entities -Force

这个工作。但是有没有办法用已知接口(interface)来搭建所有实体?所以我有接口(interface) IEntityBase我希望所有实体都有这个界面

笔记
此问题特定于 EF Core 2+ 和脚手架

更新 1
所以根据 SO Suggesion我创建了 CSharpEntityTypeGeneratorIDesignTimeServices接受的答案对 EF Core > 2.* 无效,所以我使用了@Chris Peacock 的建议
public class MyEntityTypeGenerator: CSharpEntityTypeGenerator
{
public MyEntityTypeGenerator(ICSharpHelper cSharpHelper)
: base(cSharpHelper)
{
}

public override string WriteCode(IEntityType entityType, string @namespace, bool useDataAnnotations)
{
string code = base.WriteCode(entityType, @namespace, useDataAnnotations);

var oldString = "public partial class " + entityType.Name;
var newString = "public partial class " + entityType.Name + " : EntityBase";

return code.Replace(oldString, newString);
}
}


public class MyDesignTimeServices: IDesignTimeServices
{
public void ConfigureDesignTimeServices(IServiceCollection serviceCollection)
{
serviceCollection.AddSingleton<ICSharpEntityTypeGenerator, MyEntityTypeGenerator>();
}
}

我必须做出一项改变。 CSharpEntityTypeGenerator构造函数需要 ICSharpHelper作为参数而不是 ICSharpUtilities
这两个类在 Data不是启动项目的程序集。

在包管理器控制台,我再次执行了脚手架命令。但是我没有看到生成的实体有基类。

脚手架框架如何知道使用我的自定义生成器?我在 serviceCollection 中添加生成器但看起来代码永远不会被执行

我错过了什么吗?

最佳答案

您可以使用带有 Handlebars 模板的 EF Core Power Tools 来实现这一点。

https://github.com/ErikEJ/EFCorePowerTools/wiki/Reverse-Engineering#customize-code-using-handlebars

关于entity-framework-core - 使用接口(interface)搭建 EF Core 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56466993/

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