我们有一个包含多个具有相同结构的表的数据库
密钥ID ........
密钥ID .......
根据配置,表的数量可以是动态的。
我正在尝试将数据访问层升级到实体框架。我创建了一个表示表结构的类。我的计划是对所有具有相同结构的表使用相同的类。 Bubt我找不到关于如何做到这一点的足够信息。我的理解是我可以只将一个类映射到一个表。
有没有办法用实体框架来实现这个目标?
答案 0 :(得分:5)
简单方法:拥有一个包含所有属性的抽象基类,并映射具体类型:
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
{
}
我没有回答这个设计是好还是坏(我不会说你喜欢它,就像你解释的那样),我只是在回答这个问题
答案 1 :(得分:0)
如果所有表的列都相同,则可以通过传递相同的类,在流畅的api中提供表名和结构(主键,外键关系等)。
将实体类型映射到数据库中的特定表
Department的所有属性都将映射到名为t_ Department的表中的列。
modelBuilder.Entity<Department>()
.ToTable("t_Department");
您还可以像这样指定架构名称:
modelBuilder.Entity<Department>()
.ToTable("t_Department", "school");
答案 2 :(得分:0)
现在,对于我已经在EF Core中成功使用的完全不同的方法:
创建一个参数化的存储过程,该过程使用一些动态SQL返回所需的实际表并使用FromSql功能。