C# EF与缓慢变化的维度的关系

C# EF与缓慢变化的维度的关系,c#,.net,entity-framework,C#,.net,Entity Framework,我首先使用C#和.NET4.5.1以及EF6代码 有没有一种方法可以用有效性的时间范围来标记关系?对于SQL DDL,我将定义如下: create table a_b_relationship ( table_a_id int, table_b_id int, valid_from datetime, valid_to datetime ) 我想知道是否应该将关系本身定义为一个类,以便EF在关系表中转换它,或者有一个数据注释或fluent api 提前感谢如果我正确理解了您的问

我首先使用C#和.NET4.5.1以及EF6代码

有没有一种方法可以用有效性的时间范围来标记关系?对于SQL DDL,我将定义如下:

create table a_b_relationship (
  table_a_id int,
  table_b_id int,
  valid_from datetime,
  valid_to datetime
)
我想知道是否应该将关系本身定义为一个类,以便EF在关系表中转换它,或者有一个数据注释或fluent api


提前感谢

如果我正确理解了您的问题,您希望在创建的表中添加属性,以支持到表之间的多对多关系

我将创建一个单独的类来支持这一点

public class a_b_relationship 
{
  public a_b_relationship_id(table_a a, table_b b)
  {
    table_a = a;
    table_b = b;
    ValidTime(20);
  }

  public int a_b_relationship_id { get; set; }
  public int table_a_id { get; set; }
  public int table_b_id { get; set; }
  public DateTime valid_from { get; set; }
  public DateTime valid_to { get; set; }

  public virtual IEnumerable<table_a> table_as { get; set; }
  public virtual IEnumerable<table_b> table_bs { get; set; }


  private void ValidTime(int validMinutes)
  {
    valid_from = DateTime.Now();
    valid_to = DateTime.Now().AddMinutes(validMinutes);
  }
}
公共类a\U b\U关系
{
公共a_b_关系_id(表a、表b)
{
表a=a;
表b=b;
有效时间(20);
}
公共int a_b_关系_id{get;set;}
公共int表_a_id{get;set;}
公共int表_b_id{get;set;}
来自{get;set;}的公共日期时间有效_
public DateTime valid_to{get;set;}
公共虚拟IEnumerable表_为{get;set;}
公共虚拟IEnumerable表{get;set;}
私有无效有效时间(int validMinutes)
{
valid_from=DateTime.Now();
valid_to=DateTime.Now().AddMinutes(validMinutes);
}
}
然后将其映射到您的上下文中

通过这种方式,您可以为validity DateTimes添加额外的属性,而不是让EF在没有这些属性的情况下生成联接表

如果您试图在EF中设置关系时间范围(例如,当我将表_a中的记录链接到表_b中的记录时,此关系的有效期为2小时),则为否。这是您在代码中设置的业务规则

编辑
我添加了一个方法,用于添加在创建关系时访问的有效性时间范围。您仍然需要保存更改&所有这些,但这只是我将如何做的一个示例。你可以将其设置为从a&b类中的任何一个或两个类都可以使用。

你是先使用数据库还是先使用代码EF?@Shrike他在Anks@mybirthname的开头先编写代码,我忽略了这一点。这正是我试图避免的(类似于a类->类关系->类b而不是a类->类b)。EF不支持关系属性?虽然我不认为我自己是专家,但我认为我在这里所描述的设置是如何定制EF多对多关系的。如果您不需要定制,EF将生成一个_b_关系表。你想达到什么目的而这不起作用?我不希望有一个单独的实体来代表这种关系,但我明白这是正确的,也是唯一的出路。将此标记为已解决,谢谢