我们有一个包含多个具有相同结构的表的数据库
钥匙 ID ........
密钥 ID .......
表的数量可以根据配置动态变化。
我正在尝试将数据访问层升级到实体框架。我创建了一个代表表结构的类。我的计划是对具有相同结构的所有表使用相同的类。但是我找不到足够的信息来说明如何做到这一点。我的理解是我只能将一个类映射到一张表。
有没有办法使用实体框架来实现这一点?
简单的方法:拥有一个包含所有属性的抽象基类,并映射具体类型:
public abstract class BaseClass
{
public int Id { get; set; }
public string StringField { get; set; }
/* Other fields */
}
[Table("Table1")]
public class Table1 : BaseClass
{
}
[Table("Table2")]
public class Table2 : BaseClass
{
}
我不是回答这个设计是好是坏(我不会说我喜欢你解释的那样),我只是回答问题
现在介绍我在 EF Core 中成功使用的完全不同的方法:
创建一个参数化存储过程,它使用一些动态 SQL 返回您想要的实际表并使用 FromSql 功能。
自 EF Core 7.0 起,新的 TPC(每个具体类型的表)映射方案似乎与此问题相关。 当调用 TPC 映射方案时,每个具体类都可以映射到单个表,而不会出现任何奇怪的外键引用或约束问题。我找到了详细信息这里