我首先使用带有.net 4.5.1和EF 6代码的C#。
有没有办法在有效时间范围内标记关系?就SQL DDL而言,我定义了这样的东西:
create table a_b_relationship (
table_a_id int,
table_b_id int,
valid_from datetime,
valid_to datetime
)
我想知道我是否应该将关系本身定义为一个类,以便EF在关系表中翻译它,或者有一个数据注释或流畅的api。
提前致谢
答案 0 :(得分:0)
如果我正确理解您的问题,您希望在创建的表中添加属性以支持表之间的多对多关系。
我会创建一个单独的类来支持它。
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);
}
}
然后在您的上下文中进行映射。
通过这种方式,您可以为有效日期时间添加额外的属性,而不是让EF生成没有它们的连接表。
如果您尝试在EF中设置关系时间范围(例如,当我将table_a中的记录链接到table_b中的记录时,则此关系有效2小时),然后是。这是您在代码中设置的业务规则。
我添加了一种方法,用于添加创建关系时访问的有效时间范围。您仍然需要保存更改&amp;所有这一切,但这只是我如何做到这一点的一个例子。您可以将其设置为从&amp;和/或b班。