我有这两个POCO ...
public class SqlTrace
{
public int id { get; set; }
public string Name { get; set; }
public virtual List<SqlTraceFile> TraceFiles { get; set; }
}
public class SqlTraceFile
{
public int id { get; set; }
public string Name { get; set; }
public virtual SqlTrace Trace { get; set; }
}
我在跟踪及其文件之间创建了一对多的关系。我想添加一个索引使其成为SqlTraceFiles对其SqlTrace而言是唯一的;允许将多个SqlTraceFiles命名为相同的名称,只要它们属于不同的SqlTrace。
以下是我在SqlTraceFileConfiguration中拥有的内容:EntityTypeConfiguration <SqlTraceFile>
Property(TraceFile => TraceFile.Name)
.IsRequired()
.HasColumnAnnotation("Index", new IndexAnnotation(
new IndexAttribute("IX_SQLTracefile_FileTrace", 1) { IsUnique = true }
));
Property(TraceFile => TraceFile.Trace)
.HasColumnAnnotation("Index", new IndexAnnotation(
new IndexAttribute("IX_SQLTracefile_FileTrace", 1) { IsUnique = true }
));
我的问题是它不使用'tracefile => tracefile.trace',我猜该实体希望使用外键代替'tracefile.trace'。我必须遵循一种模式来完成此任务吗?或解决我的位置问题。
在您的TraceFile poco中,再添加一个属性SqlTraceId
,该属性将表示外键的ID,并使用该属性来创建索引。因此,在导航属性上,将数据注释[ForeignKey="SqlTraceId "]
和唯一索引注释放置在Name
和SqlTraceId
属性上。使用数据注释可以通过以下示例实现:
public class SqlTraceFile
{
public int id { get; set; }
[Index("IX_SQLTracefile_FileTrace", 1, IsUnique = true)]
public string Name { get; set; }
[Index("IX_SQLTracefile_FileTrace", 2, IsUnique = true)]
public int SqlTraceId { get; set; }
[ForeignKey("SqlTraceId ")]
public virtual SqlTrace Trace { get; set; }
}
我认为您可以使用FluentAPI代替数据批注进行相同的操作,但是主要的事情是您知道如何解决此问题
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句